-
Total de itens
463 -
Registro em
-
Última visita
Tudo que Kakao postou
-
Como utilizar EXTRACT do Mes e Ano e filtrar pelo resultado.
pergunta respondeu ao SombraVarvas de Kakao em PostgreSQL
SELECT desp_data, EXTRACT(Month from desp_data) mes, Extract (Year from desp_data) ano from funcionariosdespesas WHERE date_trunc('month', desp_data) = '2013-01-01' -
A dica é fazer um outer join e na cláusula where testar o nulo. Sim sei montar um select mas você tem que mostrar serviço primeiro.
-
Isto é trabalho escolar? O que você já tentou?
-
Tenta assim: ) gs(mes) on gs.mes = e.mes
-
Para mostrar os meses sem movimento fica assim: with v_entradas as ( select date_trunc('month', ent_data) mes, sum(ent_valor) soma from entradas where extract(year from ent_data) = extract(year from now()) group by 1 ), v_saidas as ( select date_trunc('month', sai_data) mes, sum(sai_valor) soma from saidas where extract(year from sai_data) = extract(year from now()) group by 1 ) select to_char(gs.mes, 'YYYY-MM') mes, round(coalesce(e.soma, 0), 4) entrada, round(coalesce(s.soma, 0), 4) saida, round(coalesce(e.soma, 0) - coalesce(s.soma, 0), 4) saldo from v_entradas e inner join v_saidas s on e.mes = s.mes right outer join generate_series ( date_trunc('year', now()), date_trunc('year', now()) + interval '1 year - 1 month', '1 month' ) gs(mes)
-
Qual é a versão do postgresql?
-
Pelo que entendi o que você quer é isto: with v_entradas as ( select date_trunc('month', ent_data) mes, sum(coalesce(ent_valor, 0)) soma from entradas where extract(year from ent_data) = extract(year from now()) group by 1 ), v_saidas as ( select date_trunc('month', sai_data) mes, sum(coalesce(sai_valor, 0)) soma from saidas where extract(year from sai_data) = extract(year from now()) group by 1 ) select to_char(e.mes, 'YYYY-MM') mes, round(e.soma, 4) soma, round(s.soma, 4) soma, round(e.soma - s.soma, 4) saldo from v_entradas e inner join v_saidas s on e.mes = s.mes
-
Para otimização é necessário mostrar a consulta que se quer melhorar e a estrutura das respectivas tabelas. E a versão do postgresql.
-
conexão com banco de dados postgresql em linux
pergunta respondeu ao Robson A. Ribeiro de Kakao em PostgreSQL
Desligue o firewall só para testar. Retire a linha 192.168.254.0/32 trust e deixe só 192.168.254.0/24 trust. -
Como gravar caracter & em banco postgree latin1
pergunta respondeu ao Sergio Puma de Kakao em PostgreSQL
Você já tentou url_encode? -
Como gravar caracter & em banco postgree latin1
pergunta respondeu ao Sergio Puma de Kakao em PostgreSQL
Mostre o código onde você recebe os campos antes de passar para o postgresql (php, python, etc) -
Você pode concatenar os números numa string binária: create table jogo ( codigo integer, num binary(2), primary key (codigo, num) ); insert into jogo (codigo, num) values (1, concat(unhex(hex(240)), unhex(hex(40)))) ; select codigo, conv(hex(left(num, 1)), 16, 10) n1, conv(hex(mid(num, 2, 1)), 16, 10) n2 from jogo; +--------+------+------+ | codigo | n1 | n2 | +--------+------+------+ | 1 | 240 | 40 | +--------+------+------+
-
O que aconteceu com o seu teste é que você digitou a string e ela foi com a codificação do seu terminal e aí ficou diferente do que está na base. Veja que quando você for comparar uma string vinda de um feed com a que está na base as duas vão ter a mesma codificação. A não ser que o desenvolvedor do feed fique alterando. Então me parece que trocar os caracteres especiais é uma complicação desnecessária. Se for realmente necessário trocar os caracteres então eu acho que vale a pena pensar um pouco mais se a abordagem do hash é a mais indicada.
-
Executar função em um intervalo de tempo
pergunta respondeu ao Poliano Martini de Kakao em PostgreSQL
Crie um arquivo com os comandos que você quer que sejam executados, por exemplo meu_script.sql: select minha_funcao(meu_parametro); select outra_funcao(); Se for Linux coloque o comando psql no seu crontab: * * * * * psql --file /caminho/para/meu_script.sql -U usuario_da_base minha_base & Se for Windows use o agendador de tarefas para rodar o script. -
Pra mim funcionou. Eu testei assim: create table fee_itens ( ite_unico varchar(255), ite_codigo integer, ite_md5 binary(8) ); insert into fee_itens (ite_unico, ite_codigo, ite_md5) values( 'Veneno de aranha é usado em pesquisa contra disfunção erétil', 7395927, unhex(left(md5('Veneno de aranha é usado em pesquisa contra disfunção erétil'), 16)) ); select ite_codigo, ite_unico, ite_md5, unhex(left(md5( 'Veneno de aranha é usado em pesquisa contra disfunção erétil'), 16)) FROM fee_itens where ite_md5 = unhex(left(md5( 'Veneno de aranha é usado em pesquisa contra disfunção erétil'), 16)) ; +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------+ | ite_codigo | ite_unico | ite_md5 | unhex(left(md5( 'Veneno de aranha é usado em pesquisa contra disfunção erétil'), 16)) | +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------+ | 7395927 | Veneno de aranha é usado em pesquisa contra disfunção erétil | *A(%1 | *A(%1 | +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------+ Teste a consulta a seguir e poste o resultado: select ite_codigo, ite_unico, ite_md5, unhex(left(md5( 'Veneno de aranha é usado em pesquisa contra disfunção erétil'), 16)) FROM fee_itens where ite_codigo = 7395927 ; +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------------+ | ite_codigo | ite_unico | ite_md5 | UNHEX( LEFT( MD5( 'Veneno de aranha é usado em pesquisa contra disfunção erétil' ) , 16 ) ) | +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------------+ | 7395927 | Veneno de aranha é usado em pesquisa contra disfunção erétil | *A(%1 | *A(%1 | +------------+------------------------------------------------------------------+----------+-------------------------------------------------------------------------------------------------+ Mostre o create da tabela fee_itens e também o insert da linha acima.
-
Você setou o campo ite_md5 com o hash do campo ite_unico: update fee_itens set ite_md5 = unhex( md5(ite_unico) ); Depois comparou com o hash de outro campo, o ite_codigo: SELECT ite_unico, ite_md5, UNHEX( MD5( ite_codigo ) ) AS conf_md5 FROM fee_itens Experimente comparar com o hash de ite_unico: SELECT ite_unico, ite_md5, UNHEX( MD5( ite_unico ) ) AS conf_md5 FROM fee_itens
-
Com tamanho 16 o índice vai ter o dobro do tamanho e portanto vai levar mais tempo para ser percorrido. A diferença real só poderá ser testada com uma tabela grande. Talvez seja pouco ou talvez seja mais. Só testando.
-
É só "md5_hash binary(8)". Índice normal btree.
-
Exato. Uma busca em um campo binário indexado vai ser muito mais rápida do que um full text search. Se a consequência da colisão não é importante então você pode diminuir o tamanho do binary para 8 por exemplo para ficar mais eficiente: create table t ( feed_unico_campo text, feed_unico_valor text, md5_hash binary(8) ); insert into t (feed_unico_campo, feed_unico_valor, md5_hash) values ('ckslsdkdi', 'kdksoskd', unhex(left(md5(concat('ckslsdkdi', 'kdksoskd')), 16))) ; select * from t where md5_hash = unhex(left(md5(concat('ckslsdkdi', 'kdksoskd')), 16)) ;
-
Qual é o tamanho da string de texto? Uma opção é salvar o hash das strings concatenadas em uma coluna BINARY: create table t ( feed_unico_campo text, feed_unico_valor text, md5_hash binary(16) ); insert into t (feed_unico_campo, feed_unico_valor, md5_hash) values ('ckslsdkdi', 'kdksoskd', unhex(md5(concat('ckslsdkdi', 'kdksoskd')))) ; select * from t where md5_hash = unhex(md5(concat('ckslsdkdi', 'kdksoskd'))) ; A chance de colisão de um hash md5 (128 bits) é insignificante: http://en.wikipedia.org/wiki/Birthday_para...obability_table
-
select c.*, d.*, o.ip, o.domain, o.computer from ( select ip from cacic union select ip from dhcp union select ip from officescan ) u left join cacic c on u.ip = c.ip left join dhcp d on u.ip = d.ip left join officescan o on u.ip = o.ip where c.ip is null
-
select t.id, t.cpf from ( select cpf from ( select id, cpf from t group by id, cpf ) s group by cpf having count(*) > 1 ) s inner join t on t.cpf = s.cpf order by t.cpf, t.id
-
select cpf from t group by cpf having count(*) > 1 order by cpf
-
Se não está criptografada não é senha normal. É senha ruim. Tentar ajudar é dar corda para você se enforcar.
-
A senha está criptografada?