Re: [pgbr-geral] Ajuda com SELECT
De: "Antonio Cesar" <cgcesarsoa...@gmail.com> Para: "Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.org.br> Enviadas: Quinta-feira, 2 de novembro de 2017 9:44:44 Assunto: [pgbr-geral] Ajuda com SELECT Bom dia, Estou com esse comando com uma percima peformace. OBs Tava funcionando normal de uma hora para outra ficou muito lento. "Limit (cost=0.26..117.46 rows=100 width=385)" " -> Nested Loop (cost=0.26..36017.81 rows=30730 width=385)" " -> Merge Join (cost=0.26..27384.58 rows=30730 width=389)" " Merge Cond: (its.codigo = ip.codigo_item)" " Join Filter: (its.codigo_unidade = ip.codigo_unidade)" " -> Index Scan using pk_item_codigo on item its (cost=0.00..8508.14 rows=33680 width=385)" " Filter: ((tipo_item <> ALL ('{07,08}'::bpchar[])) AND (ativo = 'S'::bpchar))" " -> Index Scan using pk_item_preco_codigo on item_preco ip (cost=0.00..18258.11 rows=56550 width=8)" " Index Cond: ((codigo_empresa = 2) AND (codigo_negocio = 1))" " Filter: ((ativo)::bpchar = 'S'::bpchar)" " -> Index Only Scan using pk_unidade_codigo on unidade un (cost=0.00..0.27 rows=1 width=4)" " Index Cond: (codigo = ip.codigo_unidade)" Servidor: mem 32GB Linux debian Processador 8 Nucle Marca DELL Conexao simutaneo 18 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral de Banco de Dados Departamento Data Center daniel.si...@ipm.com.br 48 3031-7500 Antonio, Utiliza esse site [1] para conseguir analisar performance de query. Sobre a query o que mais consome é no índice pk_item_preco_codigo e realizar o merge entre os registros. Mas o que seria lento para você? Essa consulta movimenta poucos registros, acredito que demora mais de 1 segundo para executar, mas caso demore terá que validar se o caminho seguido é bom suficiente para seu negócio. [1] http://tatiyants.com/pev/#/plans/new ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com SELECT
Bom dia, Estou com esse comando com uma percima peformace. OBs Tava funcionando normal de uma hora para outra ficou muito lento. "Limit (cost=0.26..117.46 rows=100 width=385)" " -> Nested Loop (cost=0.26..36017.81 rows=30730 width=385)" "-> Merge Join (cost=0.26..27384.58 rows=30730 width=389)" " Merge Cond: (its.codigo = ip.codigo_item)" " Join Filter: (its.codigo_unidade = ip.codigo_unidade)" " -> Index Scan using pk_item_codigo on item its (cost=0.00..8508.14 rows=33680 width=385)" "Filter: ((tipo_item <> ALL ('{07,08}'::bpchar[])) AND (ativo = 'S'::bpchar))" " -> Index Scan using pk_item_preco_codigo on item_preco ip (cost=0.00..18258.11 rows=56550 width=8)" "Index Cond: ((codigo_empresa = 2) AND (codigo_negocio = 1))" "Filter: ((ativo)::bpchar = 'S'::bpchar)" "-> Index Only Scan using pk_unidade_codigo on unidade un (cost=0.00..0.27 rows=1 width=4)" " Index Cond: (codigo = ip.codigo_unidade)" Servidor: mem 32GB Linux debian Processador 8 Nucle Marca DELL Conexao simutaneo 18 <>___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Em 06-08-2016 16:16, Tiago José Adami escreveu: Em 6 de agosto de 2016 16:13, Tiago José Adamiescreveu: Em 5 de agosto de 2016 16:51, Edson F. Lidorio escreveu: Opa! Quase isso, Preciso considerar: - todos os produtos Não ficou claro, mas acredito que você deseje incluir todos os produtos da tabela produto mesmo que não haja registros na tabela historico_vendas, correto? Isto pode ser resolvido com um LEFT/RIGHT OUTER JOIN. Veja o exemplo do SQL abaixo. - e também fazer a média por 1 ano dos produtos que tem menos de 1 ano Você especificou no post original que deseja uma média de 1 ano. O SQL abaixo irá trazer *todos* os produtos, de 1 ano atrás até a data atual. A média será pelo período inteiro (1 ano = 12 meses = 365 ou 366 dias se for ano bissexto). Com este código SQL abaixo você terá a média do último ano de todos os produtos, independente de quando foram cadastrados. SELECT pr.id_produto, pr.nome_produto, AVG(COALESCE(hv.qtde_produto,0)) as qtde_produto_media FROM produtos pr LEFT OUTER JOIN historico_vendas hv ON pr.id_produto = hv.id_produto WHERE hv.data_venda >= CURRENT_DATE - INTERVAL '1 YEAR' GROUP BY pr.id_produto, pr.nome_produto Depois do envio do e-mail que eu me liguei que faltou fazer uma pergunta: Você deseja a média diária, mensal, semanal ou qual período dentro do ano? De uma forma grosseira, se você deseja a média mensal dentro do ano, o SQL seria mais ou menos assim: SELECT pr.id_produto, pr.nome_produto, SUM(COALESCE(hv.qtde_produto,0))/12 as qtde_produto_media_mensal FROM produtos pr LEFT OUTER JOIN historico_vendas hv ON pr.id_produto = hv.id_produto WHERE hv.data_venda >= CURRENT_DATE - INTERVAL '1 YEAR' GROUP BY pr.id_produto, pr.nome_produto TIAGO J. ADAMI http://www.adamiworks.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Olá Tiago, A forma que expressei não deu para entender bem! Desejo a média mensal dos produtos que tiveram históricos na tabela historico_vendas. Os produtos que tiveram movimentos durante um ano então faz a media mensal no período de um ano e os produtos que não tiveram movimentos na tabela historico_vendas então liste com a média zerada. Sendo assim vai trazer todos os produtos cadastrados. Os que tiveram movimentos então faz a media mensal de um ano e os que não tiveram liste com média zero. Acho que agora ficou mais claro. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Em 6 de agosto de 2016 16:13, Tiago José Adamiescreveu: > Em 5 de agosto de 2016 16:51, Edson F. Lidorio > escreveu: >> Opa! >> Quase isso, Preciso considerar: >> >> - todos os produtos > > Não ficou claro, mas acredito que você deseje incluir todos os > produtos da tabela produto mesmo que não haja registros na tabela > historico_vendas, correto? Isto pode ser resolvido com um LEFT/RIGHT > OUTER JOIN. Veja o exemplo do SQL abaixo. > >> - e também fazer a média por 1 ano dos produtos que tem menos de 1 ano > > Você especificou no post original que deseja uma média de 1 ano. O SQL > abaixo irá trazer *todos* os produtos, de 1 ano atrás até a data > atual. A média será pelo período inteiro (1 ano = 12 meses = 365 ou > 366 dias se for ano bissexto). Com este código SQL abaixo você terá a > média do último ano de todos os produtos, independente de quando foram > cadastrados. > > > SELECT > pr.id_produto, > pr.nome_produto, > AVG(COALESCE(hv.qtde_produto,0)) as qtde_produto_media > FROM > produtos pr > LEFT OUTER JOIN > historico_vendas hv ON > pr.id_produto = hv.id_produto > WHERE > hv.data_venda >= CURRENT_DATE - INTERVAL '1 YEAR' > GROUP BY > pr.id_produto, > pr.nome_produto Depois do envio do e-mail que eu me liguei que faltou fazer uma pergunta: Você deseja a média diária, mensal, semanal ou qual período dentro do ano? De uma forma grosseira, se você deseja a média mensal dentro do ano, o SQL seria mais ou menos assim: SELECT pr.id_produto, pr.nome_produto, SUM(COALESCE(hv.qtde_produto,0))/12 as qtde_produto_media_mensal FROM produtos pr LEFT OUTER JOIN historico_vendas hv ON pr.id_produto = hv.id_produto WHERE hv.data_venda >= CURRENT_DATE - INTERVAL '1 YEAR' GROUP BY pr.id_produto, pr.nome_produto TIAGO J. ADAMI http://www.adamiworks.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Em 5 de agosto de 2016 16:51, Edson F. Lidorioescreveu: > Opa! > Quase isso, Preciso considerar: > > - todos os produtos Não ficou claro, mas acredito que você deseje incluir todos os produtos da tabela produto mesmo que não haja registros na tabela historico_vendas, correto? Isto pode ser resolvido com um LEFT/RIGHT OUTER JOIN. Veja o exemplo do SQL abaixo. > - e também fazer a média por 1 ano dos produtos que tem menos de 1 ano Você especificou no post original que deseja uma média de 1 ano. O SQL abaixo irá trazer *todos* os produtos, de 1 ano atrás até a data atual. A média será pelo período inteiro (1 ano = 12 meses = 365 ou 366 dias se for ano bissexto). Com este código SQL abaixo você terá a média do último ano de todos os produtos, independente de quando foram cadastrados. SELECT pr.id_produto, pr.nome_produto, AVG(COALESCE(hv.qtde_produto,0)) as qtde_produto_media FROM produtos pr LEFT OUTER JOIN historico_vendas hv ON pr.id_produto = hv.id_produto WHERE hv.data_venda >= CURRENT_DATE - INTERVAL '1 YEAR' GROUP BY pr.id_produto, pr.nome_produto TIAGO J. ADAMI http://www.adamiworks.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Em 2016-08-05 15:37, Tiago José Adami escreveu: Em 5 de agosto de 2016 14:22, Edson F. Lidorioescreveu: Boa tarde Pessoal, Estou precisando de um ajuda para montar o select abaixo: Preciso exibir uma média de consumo de produtos gastos nos últimos 12 meses. Considerando que só irei informar a data atual no select e que preciso pegar todos produtos e fazer a medias de todos produtos gastos nos últimos 12 meses. Tabela: histórico_vendas data_venda id_produto qtde_produto Tabela: produtos id_produto nome_produto Veja se isso te ajuda: SELECT hv.id_produto, pr.nome_produto, AVG(qtde_produto) as qtde_produto_media FROM historico_vendas hv JOIN produtos pr ON pr.id_produto = hv.id_produto WHERE hv.data_venda >= CURRENT_DATE - INTERVAL '1 YEAR' GROUP BY hv.id_produto, pr.nome_produto TIAGO J. ADAMI http://www.adamiworks.com http://www.clouddba.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Opa! Quase isso, Preciso considerar: - todos os produtos - e também fazer a média por 1 ano dos produtos que tem menos de 1 ano ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Em 5 de agosto de 2016 14:22, Edson F. Lidorioescreveu: > Boa tarde Pessoal, > > Estou precisando de um ajuda para montar o select abaixo: > Preciso exibir uma média de consumo de produtos gastos nos últimos 12 meses. > Considerando que só irei informar a data atual no select e que preciso pegar > todos produtos e fazer a medias de todos produtos gastos nos últimos 12 > meses. > > Tabela: histórico_vendas > data_venda > id_produto > qtde_produto > > Tabela: produtos > id_produto > nome_produto Veja se isso te ajuda: SELECT hv.id_produto, pr.nome_produto, AVG(qtde_produto) as qtde_produto_media FROM historico_vendas hv JOIN produtos pr ON pr.id_produto = hv.id_produto WHERE hv.data_venda >= CURRENT_DATE - INTERVAL '1 YEAR' GROUP BY hv.id_produto, pr.nome_produto TIAGO J. ADAMI http://www.adamiworks.com http://www.clouddba.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com Select
Boa tarde Pessoal, Estou precisando de um ajuda para montar o select abaixo: Preciso exibir uma média de consumo de produtos gastos nos últimos 12 meses. Considerando que só irei informar a data atual no select e que preciso pegar todos produtos e fazer a medias de todos produtos gastos nos últimos 12 meses. Tabela: histórico_vendas data_venda id_produto qtde_produto Tabela: produtos id_produto nome_produto -- Edson ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] ajuda com SELECT
Boa tarde a todos na lista, Gostaria de pedir ajuda para resolver a seguinte questão. Tenho os seguintes dados: 45101;"A";4 45101;"S";23 45102;"A";4 45103;"S";23 45104;"A";4 45105;"S";23 45105;"W";3 45106;"S";23 45107;"A";4 45108;"W";3 45108;"A";4 Na primeira coluna esta um valor que se repete. Na segunda coluna letras W, A e S, mas que podem ser outras. Na terceira coluna o 'peso' correspondente a cada uma das letras. Cada letra tem sempre o mesmo peso. Quero uma elaborar uma consulta onde: 1) o valor da primeira coluna não se repete 2) a letra da segunda coluna é a de menor peso 3) não se exclui os registos quando os valores da primeira coluna que não se repetem. Resultado esperado: 45101;"A";4 45102;"A";4 45103;"S";23 45104;"A";4 45105;"W";3 45106;"S";23 45107;"A";4 45108;"W";3 Obrigado! Atentamente, Eloi ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Pessoal, Estou executando esse select: SELECT ped_data , SUM(CASE WHEN ped_coddepto = 3 THEN 1 ELSE 0 END) AS fiscal , SUM(CASE WHEN ped_coddepto = 5 THEN 1 ELSE 0 END) AS dsi , SUM(CASE WHEN ped_coddepto = 7 THEN 1 ELSE 0 END) AS agendamento , SUM(CASE WHEN ped_coddepto = 4 THEN 1 ELSE 0 END) AS logistica , SUM(CASE WHEN ped_coddepto = 6 THEN 1 ELSE 0 END) AS transportadora , COUNT(*) AS total FROM pedido WHERE (ped_data '2008-10-24') GROUP BY ped_data ORDER BY 1; E obtenho esse resultado: ped_data| fiscal | dsi | agendamento | logistica | transportadora | total -++-+-++--+--- 2008-10-20 | 1 | 0 |1 | 0 |0 | 2 2008-10-21 | 1 | 0 |0 | 0 |0 | 1 2008-10-22 | 2 | 0 |2 | 0 |0 | 4 2008-10-23 | 0 | 1 |0 | 0 |0 | 1 (4 registros) Onde cada coluna (com exceção de ped_data e total) representa um departamento, ou seja, o resultado me mostra o total por data e departamento. O problema é que isso está totalmente manual, se for criado um novo departamento terei que alterar a select para contemplar o novo departamento, existe a possibilidade de deixar algo mais natural, sem necessidade de alterar o select a cada novo departamento criado? Colocar colunas dinamicamente sempre foi algo complicado no mundo relacional. Existem algumas formas de resolver isso, a mais clássica é não ter colunas dinâmicas, ou seja, você faz seus totais em linhas, como abaixo, montando as colunas na aplicação a partir do resultado: SELECT ped_data ped_coddepto, count(ped_coddepto) as somatoria FROM pedido WHERE (ped_data '2008-10-24') GROUP BY ped_data, ped_coddepto ORDER BY ped_data, ped_coddepto; Eu colocaria uma tabela relacionada com os códigos e nomes de departamento, aí com um simples inner join você pode obter os nomes. A segunda opção é olhar a extensão tablefunc que faz a transposição de linhas em colunas: http://www.postgresql.org/docs/current/static/tablefunc.html A terceira opçào é escrever uma função que te monte o SELECT de forma dinâmica. Aviso antecipadamente que é a mais complicadinha de fazer porque você obterá provavelmente um vetor de resultados pra facilitar o retorno. []s Flavio Gurgel ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Pessoal, Estou executando esse select: SELECT ped_data , SUM(CASE WHEN ped_coddepto = 3 THEN 1 ELSE 0 END) AS fiscal , SUM(CASE WHEN ped_coddepto = 5 THEN 1 ELSE 0 END) AS dsi , SUM(CASE WHEN ped_coddepto = 7 THEN 1 ELSE 0 END) AS agendamento , SUM(CASE WHEN ped_coddepto = 4 THEN 1 ELSE 0 END) AS logistica , SUM(CASE WHEN ped_coddepto = 6 THEN 1 ELSE 0 END) AS transportadora , COUNT(*) AS total FROM pedido WHERE (ped_data '2008-10-24') GROUP BY ped_data ORDER BY 1; E obtenho esse resultado: ped_data| fiscal | dsi | agendamento | logistica | transportadora | total -++-+-++--+--- 2008-10-20 | 1 | 0 |1 | 0 | 0 | 2 2008-10-21 | 1 | 0 |0 | 0 | 0 | 1 2008-10-22 | 2 | 0 |2 | 0 |0 | 4 2008-10-23 | 0 | 1 |0 | 0 |0 | 1 (4 registros) Onde cada coluna (com exceção de ped_data e total) representa um departamento, ou seja, o resultado me mostra o total por data e departamento. O problema é que isso está totalmente manual, se for criado um novo departamento terei que alterar a select para contemplar o novo departamento, existe a possibilidade de deixar algo mais natural, sem necessidade de alterar o select a cada novo departamento criado? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Pessoal, Possuo uma tabela de histórico de leitura, onde cada registro possui o id da tabela pai: tabela_documento = tabela pai (contém os dados principais do objeto) tabela_historico = historico de leituras (contém data, hora, origem e destino de cada objeto). Resumindo, para cada registro na tabela pai, eu posso ter vários registros na tabela de histórico. O meu problema está que por uma falha na programação, o sistema não obedeceu essa regra, ficou no relacionamento 1 para 1. Preciso agora corrigir isso, pegar todos os registros da tabela de histórico e atualizá-los com um único id da tabela pai correspondente. Pensei em utilizar a querie abaixo, onde eu monto o comando de update na tabela de histórico e delete na tabela pai SELECT , 'UPDATE historico SET idpai = '||split_part(string_agg(idpai::text,','),',',1)||' WHERE (idhistorico IN ('||string_agg(idhistorico::text,',')||'));' , 'DELETE FROM tabela_pai WHERE (idpai IN ('||string_agg(idpai::text,',')||')) AND (idpai '||split_part(string_agg(idpai::text,','),',',1)||');' FROM historico GROUP BY codempresa,codcliente,codproduto,codbarras HAVING COUNT(*) 1 mas encontrei 2 problemas, o primeiro é a demora no select, cancelei o select após 25 minutos (a tabela possui em torno de 980 mil registros), o segundo é o limite de caracteres de retorno da função string_agg (retorna parte dos códigos, pois no final fica (...). Vamos lá, existe uma forma melhor de executar o eu preciso? A função string_agg realmente possui essa limitação? []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Em 22 de agosto de 2014 21:43, Danilo Silva danilo.dsg.go...@gmail.com escreveu: Pessoal, Possuo uma tabela de histórico de leitura, onde cada registro possui o id da tabela pai: tabela_documento = tabela pai (contém os dados principais do objeto) tabela_historico = historico de leituras (contém data, hora, origem e destino de cada objeto). Resumindo, para cada registro na tabela pai, eu posso ter vários registros na tabela de histórico. O meu problema está que por uma falha na programação, o sistema não obedeceu essa regra, ficou no relacionamento 1 para 1. Preciso agora corrigir isso, pegar todos os registros da tabela de histórico e atualizá-los com um único id da tabela pai correspondente. Pensei em utilizar a querie abaixo, onde eu monto o comando de update na tabela de histórico e delete na tabela pai SELECT , 'UPDATE historico SET idpai = '||split_part(string_agg(idpai::text,','),',',1)||' WHERE (idhistorico IN ('||string_agg(idhistorico::text,',')||'));' , 'DELETE FROM tabela_pai WHERE (idpai IN ('||string_agg(idpai::text,',')||')) AND (idpai '||split_part(string_agg(idpai::text,','),',',1)||');' FROM historico GROUP BY codempresa,codcliente,codproduto,codbarras HAVING COUNT(*) 1 mas encontrei 2 problemas, o primeiro é a demora no select, cancelei o select após 25 minutos (a tabela possui em torno de 980 mil registros), o segundo é o limite de caracteres de retorno da função string_agg (retorna parte dos códigos, pois no final fica (...). Vamos lá, existe uma forma melhor de executar o eu preciso? A função string_agg realmente possui essa limitação? Pessoal esqueci de mencionar que executei a select no pgadmin, estive vendo pelo psql e parece que a limitação de caracteres da função string_agg não acontece, talvez seja alguma coisa do pgadmin. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Em 22 de agosto de 2014 21:50, Danilo Silva danilo.dsg.go...@gmail.com escreveu: Em 22 de agosto de 2014 21:43, Danilo Silva danilo.dsg.go...@gmail.com escreveu: Pessoal, Possuo uma tabela de histórico de leitura, onde cada registro possui o id da tabela pai: tabela_documento = tabela pai (contém os dados principais do objeto) tabela_historico = historico de leituras (contém data, hora, origem e destino de cada objeto). Resumindo, para cada registro na tabela pai, eu posso ter vários registros na tabela de histórico. O meu problema está que por uma falha na programação, o sistema não obedeceu essa regra, ficou no relacionamento 1 para 1. Preciso agora corrigir isso, pegar todos os registros da tabela de histórico e atualizá-los com um único id da tabela pai correspondente. Pensei em utilizar a querie abaixo, onde eu monto o comando de update na tabela de histórico e delete na tabela pai SELECT , 'UPDATE historico SET idpai = '||split_part(string_agg(idpai::text,','),',',1)||' WHERE (idhistorico IN ('||string_agg(idhistorico::text,',')||'));' , 'DELETE FROM tabela_pai WHERE (idpai IN ('||string_agg(idpai::text,',')||')) AND (idpai '||split_part(string_agg(idpai::text,','),',',1)||');' FROM historico GROUP BY codempresa,codcliente,codproduto,codbarras HAVING COUNT(*) 1 mas encontrei 2 problemas, o primeiro é a demora no select, cancelei o select após 25 minutos (a tabela possui em torno de 980 mil registros), o segundo é o limite de caracteres de retorno da função string_agg (retorna parte dos códigos, pois no final fica (...). Vamos lá, existe uma forma melhor de executar o eu preciso? A função string_agg realmente possui essa limitação? Pessoal esqueci de mencionar que executei a select no pgadmin, estive vendo pelo psql e parece que a limitação de caracteres da função string_agg não acontece, talvez seja alguma coisa do pgadmin. Pessoal, Consegui executar o select através do comando COPY TO (levou 20s e retornou 16 mil registros), parece que a limitação foi mesmo com o pgadmin, pois a função string_agg retornou todos os códigos. []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Pessoal, Tendo a seguinte estrutura: CREATE TABLE leitura ( codmovimento integer, dtmovimento date, codbarras text ); INSERT INTO leitura VALUES (1,'2013-01-04', 'ABCD'), (1,'2013-01-04', 'ABCDEF'), (2,'2013-01-05', 'ABCD'), (1,'2013-01-03', 'XYZ'), (1,'2013-01-07', 'FULANO'), (2,'2013-01-07', 'XYZ'); Preciso fazer um select onde traga, uma coluna com o codmovimento e cada dtmovimento sendo uma coluna com a contagem total de cada movimento, exemplo: codmovimento | 2013-01-03 | 2013-01-04 | 2013-01-05 | 2013-01-07 --+-++-+ 1 |1 | 2 | 0 | 1 2 |0 | 0 | 1 | 1 (2 rows) []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
2013/10/28, Danilo Silva danilo.dsg.go...@gmail.com: Pessoal, Tendo a seguinte estrutura: CREATE TABLE leitura ( codmovimento integer, dtmovimento date, codbarras text ); INSERT INTO leitura VALUES (1,'2013-01-04', 'ABCD'), (1,'2013-01-04', 'ABCDEF'), (2,'2013-01-05', 'ABCD'), (1,'2013-01-03', 'XYZ'), (1,'2013-01-07', 'FULANO'), (2,'2013-01-07', 'XYZ'); Preciso fazer um select onde traga, uma coluna com o codmovimento e cada dtmovimento sendo uma coluna com a contagem total de cada movimento, exemplo: codmovimento | 2013-01-03 | 2013-01-04 | 2013-01-05 | 2013-01-07 --+-++-+ 1 |1 | 2 | 0 | 1 2 |0 | 0 | 1 | 1 (2 rows) Pesquise por crosstab no módulo adicional tablefunc: http://www.postgresql.org/docs/current/interactive/tablefunc.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
2013/10/28 Osvaldo Kussama osvaldo.kuss...@gmail.com 2013/10/28, Danilo Silva danilo.dsg.go...@gmail.com: Pessoal, Tendo a seguinte estrutura: CREATE TABLE leitura ( codmovimento integer, dtmovimento date, codbarras text ); INSERT INTO leitura VALUES (1,'2013-01-04', 'ABCD'), (1,'2013-01-04', 'ABCDEF'), (2,'2013-01-05', 'ABCD'), (1,'2013-01-03', 'XYZ'), (1,'2013-01-07', 'FULANO'), (2,'2013-01-07', 'XYZ'); Preciso fazer um select onde traga, uma coluna com o codmovimento e cada dtmovimento sendo uma coluna com a contagem total de cada movimento, exemplo: codmovimento | 2013-01-03 | 2013-01-04 | 2013-01-05 | 2013-01-07 --+-++-+ 1 |1 | 2 | 0 | 1 2 |0 | 0 | 1 | 1 (2 rows) Pesquise por crosstab no módulo adicional tablefunc: http://www.postgresql.org/docs/current/interactive/tablefunc.html Osvaldo Aparentemente crosstab resolveria, mas eu teria que mencionar as colunas, e no meu caso, não daria para saber quais são, já que as colunas seriam as datas... a não ser que eu crie uma função para resolver o meu problema... []s Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Em 28/10/13, Danilo Silvadanilo.dsg.go...@gmail.com escreveu: 2013/10/28 Osvaldo Kussama osvaldo.kuss...@gmail.com 2013/10/28, Danilo Silva danilo.dsg.go...@gmail.com: Pessoal, Tendo a seguinte estrutura: CREATE TABLE leitura ( codmovimento integer, dtmovimento date, codbarras text ); INSERT INTO leitura VALUES (1,'2013-01-04', 'ABCD'), (1,'2013-01-04', 'ABCDEF'), (2,'2013-01-05', 'ABCD'), (1,'2013-01-03', 'XYZ'), (1,'2013-01-07', 'FULANO'), (2,'2013-01-07', 'XYZ'); Preciso fazer um select onde traga, uma coluna com o codmovimento e cada dtmovimento sendo uma coluna com a contagem total de cada movimento, exemplo: codmovimento | 2013-01-03 | 2013-01-04 | 2013-01-05 | 2013-01-07 --+-++-+ 1 |1 | 2 | 0 | 1 2 |0 | 0 | 1 | 1 (2 rows) Pesquise por crosstab no módulo adicional tablefunc: http://www.postgresql.org/docs/current/interactive/tablefunc.html Osvaldo Aparentemente crosstab resolveria, mas eu teria que mencionar as colunas, e no meu caso, não daria para saber quais são, já que as colunas seriam as datas... a não ser que eu crie uma função para resolver o meu problema... Creio que a variante de 2 parâmetros resolveria. (F.36.1.4. crosstab(text, text)) O segundo parâmetro seria: SELECT DISTINSCT dtmovimento FROM leitura ORDER BY 1; Você teria a relação de todas as datas existentes. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Pessoal, ainda não consegui encontrar o problema, segue o meu modelo no endereço abaixo: http://imagebin.org/224706 Edson Em 13/08/2012 21:21, Anselmo Silva escreveu: Faça um modelo resumido do problema com a estrutura deste modelo para melhores dicas. 'Chutando' eu aconselharia que vc revisasse as ligações (joins), se estão consistentes. 2012/8/13 Edson - Listas edson...@gmail.com mailto:edson...@gmail.com Olá Pessoal, O meu select abaixo, esta duplicando as linhas, mesmo usando DISTINCT. select DISTINCT a.cd_fil,a.cd_ordem,a.dt_abertura, a.cd_cli,f.nm_cli,f.de_endereco,f.fone, a.vlr_final_os,a.vlr_desc_os,a.vlr_outros, a.vlr_tot_prod,a.vlr_tot_serv,a.servico_solicitado, a.de_ocorrencia, h.de_cid,a.cd_funcio,e.nm_funcio,b.cd_prod, g.de_prod,b.qtde_prod,b.vlr_unit_prod,b.perc_desc_prod, b.vlr_desc_prod,b.vlr_prod,b.total_prod, c.cd_servico,d.de_servico,c.qtd_serc,c.vlr_unit, c.perc_desc_serv,c.vlr_desc,c.vlr_serv, c.sub_total, CASE WHEN a.fg_tipo_os = 'INS' THEN 'INSTALAÇÃO' WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO' WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO' WHEN a.fg_tipo_os = 'ACO' THEN 'À COBRAR' WHEN a.fg_tipo_os = 'GAR' THEN 'GARANTIA' WHEN a.fg_tipo_os = 'CON' THEN 'CONTRATO' WHEN a.fg_tipo_os = 'ORC' THEN 'ORÇAMENTO' ELSE 'OUTROS' END tipo_os, CASE WHEN a.fg_status_os = 'AB' THEN 'ABERTA' WHEN a.fg_status_os = 'FC' THEN 'FECHADA' ELSE 'INVÁLIDA' END status_os from osservhe a inner JOIN osprodut b on a.cd_ordem = b.cd_ordem inner join cliente f on a.cd_cli = f.cd_cli inner join vendfunc e on a.cd_funcio = e.cd_funcio inner join osservde c on a.cd_ordem = c.cd_ordem left join produto g on b.cd_prod = g.cd_prod left join servicos d on c.cd_servico = d.cd_servico inner join cidade h on f.cd_cid = h.cd_cid order by a.dt_abertura,a.cd_ordem ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Anselmo M. Silva ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Edson, um toque: é meio complicado pro pessoal aqui ter tempo para refazer seu modelo completo, inserir dados e detectar seu problema. Sugestão: Faça um modelo simplificado da estrutura em que ocorre o problema, detecte o problema e poste aqui. Algo como: CREATE TABLE OS(XXX TYPE , YYY TYPE)... INSERT INTO OS(... SELECT DISTINCT(XXX... Em 15 de agosto de 2012 22:45, Edson - Listas edson...@gmail.com escreveu: Pessoal, ainda não consegui encontrar o problema, segue o meu modelo no endereço abaixo: http://imagebin.org/224706 Edson Em 13/08/2012 21:21, Anselmo Silva escreveu: Faça um modelo resumido do problema com a estrutura deste modelo para melhores dicas. 'Chutando' eu aconselharia que vc revisasse as ligações (joins), se estão consistentes. 2012/8/13 Edson - Listas edson...@gmail.com Olá Pessoal, O meu select abaixo, esta duplicando as linhas, mesmo usando DISTINCT. select DISTINCT a.cd_fil,a.cd_ordem,a.dt_abertura, a.cd_cli,f.nm_cli,f.de_endereco,f.fone, a.vlr_final_os,a.vlr_desc_os,a.vlr_outros, a.vlr_tot_prod,a.vlr_tot_serv,a.servico_solicitado, a.de_ocorrencia, h.de_cid,a.cd_funcio,e.nm_funcio,b.cd_prod, g.de_prod,b.qtde_prod,b.vlr_unit_prod,b.perc_desc_prod, b.vlr_desc_prod,b.vlr_prod,b.total_prod, c.cd_servico,d.de_servico,c.qtd_serc,c.vlr_unit, c.perc_desc_serv,c.vlr_desc,c.vlr_serv, c.sub_total, CASE WHEN a.fg_tipo_os = 'INS' THEN 'INSTALAÇÃO' WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO' WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO' WHEN a.fg_tipo_os = 'ACO' THEN 'À COBRAR' WHEN a.fg_tipo_os = 'GAR' THEN 'GARANTIA' WHEN a.fg_tipo_os = 'CON' THEN 'CONTRATO' WHEN a.fg_tipo_os = 'ORC' THEN 'ORÇAMENTO' ELSE 'OUTROS' END tipo_os, CASE WHEN a.fg_status_os = 'AB' THEN 'ABERTA' WHEN a.fg_status_os = 'FC' THEN 'FECHADA' ELSE 'INVÁLIDA' END status_os from osservhe a inner JOIN osprodut b on a.cd_ordem = b.cd_ordem inner join cliente f on a.cd_cli = f.cd_cli inner join vendfunc e on a.cd_funcio = e.cd_funcio inner join osservde c on a.cd_ordem = c.cd_ordem left join produto g on b.cd_prod = g.cd_prod left join servicos d on c.cd_servico = d.cd_servico inner join cidade h on f.cd_cid = h.cd_cid order by a.dt_abertura,a.cd_ordem ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Anselmo M. Silva ___ pgbr-geral mailing listpgbr-ge...@listas.postgresql.org.brhttps://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Anselmo M. Silva ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
On Mon, Aug 13, 2012 at 7:41 PM, Edson - Listas edson...@gmail.com wrote: Olá Pessoal, O meu select abaixo, esta duplicando as linhas, mesmo usando DISTINCT. select DISTINCT a.cd_fil,a.cd_ordem,a.dt_abertura, a.cd_cli,f.nm_cli,f.de_endereco,f.fone, a.vlr_final_os,a.vlr_desc_os,a.vlr_outros, a.vlr_tot_prod,a.vlr_tot_serv,a.servico_solicitado, a.de_ocorrencia, h.de_cid,a.cd_funcio,e.nm_funcio,b.cd_prod, g.de_prod,b.qtde_prod,b.vlr_unit_prod,b.perc_desc_prod, b.vlr_desc_prod,b.vlr_prod,b.total_prod, c.cd_servico,d.de_servico,c.qtd_serc,c.vlr_unit, c.perc_desc_serv,c.vlr_desc,c.vlr_serv, c.sub_total, CASE WHEN a.fg_tipo_os = 'INS' THEN 'INSTALAÇÃO' WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO' WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO' WHEN a.fg_tipo_os = 'ACO' THEN 'À COBRAR' WHEN a.fg_tipo_os = 'GAR' THEN 'GARANTIA' WHEN a.fg_tipo_os = 'CON' THEN 'CONTRATO' WHEN a.fg_tipo_os = 'ORC' THEN 'ORÇAMENTO' ELSE 'OUTROS' END tipo_os, CASE WHEN a.fg_status_os = 'AB' THEN 'ABERTA' WHEN a.fg_status_os = 'FC' THEN 'FECHADA' ELSE 'INVÁLIDA' END status_os from osservhe a inner JOIN osprodut b on a.cd_ordem = b.cd_ordem inner join cliente f on a.cd_cli = f.cd_cli inner join vendfunc e on a.cd_funcio = e.cd_funcio inner join osservde c on a.cd_ordem = c.cd_ordem left join produto g on b.cd_prod = g.cd_prod left join servicos d on c.cd_servico = d.cd_servico inner join cidade h on f.cd_cid = h.cd_cid order by a.dt_abertura,a.cd_ordem Tem certeza? Não são campos parecidos, mas não idênticos (p.e. com espaços extras)? Veja que o DISTINCT como você está usando tenta verificar *todas as colunas*, se quiser só alguns campos tem que ser o DISTINCT ON, talvez você queria os que estão no ORDER BY: select DISTINCT ON (a.dt_abertura,a.cd_ordem) a.cd_fil,a.cd_ordem,a.dt_abertura, ... Atenciosamente, -- Matheus de Oliveira ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Olá Pessoal, O meu select abaixo, esta duplicando as linhas, mesmo usando DISTINCT. select DISTINCT a.cd_fil,a.cd_ordem,a.dt_abertura, a.cd_cli,f.nm_cli,f.de_endereco,f.fone, a.vlr_final_os,a.vlr_desc_os,a.vlr_outros, a.vlr_tot_prod,a.vlr_tot_serv,a.servico_solicitado, a.de_ocorrencia, h.de_cid,a.cd_funcio,e.nm_funcio,b.cd_prod, g.de_prod,b.qtde_prod,b.vlr_unit_prod,b.perc_desc_prod, b.vlr_desc_prod,b.vlr_prod,b.total_prod, c.cd_servico,d.de_servico,c.qtd_serc,c.vlr_unit, c.perc_desc_serv,c.vlr_desc,c.vlr_serv, c.sub_total, CASE WHEN a.fg_tipo_os = 'INS' THEN 'INSTALAÇÃO' WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO' WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO' WHEN a.fg_tipo_os = 'ACO' THEN 'À COBRAR' WHEN a.fg_tipo_os = 'GAR' THEN 'GARANTIA' WHEN a.fg_tipo_os = 'CON' THEN 'CONTRATO' WHEN a.fg_tipo_os = 'ORC' THEN 'ORÇAMENTO' ELSE 'OUTROS' END tipo_os, CASE WHEN a.fg_status_os = 'AB' THEN 'ABERTA' WHEN a.fg_status_os = 'FC' THEN 'FECHADA' ELSE 'INVÁLIDA' END status_os from osservhe a inner JOIN osprodut b on a.cd_ordem = b.cd_ordem inner join cliente f on a.cd_cli = f.cd_cli inner join vendfunc e on a.cd_funcio = e.cd_funcio inner join osservde c on a.cd_ordem = c.cd_ordem left join produto g on b.cd_prod = g.cd_prod left join servicos d on c.cd_servico = d.cd_servico inner join cidade h on f.cd_cid = h.cd_cid order by a.dt_abertura,a.cd_ordem ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Faça um modelo resumido do problema com a estrutura deste modelo para melhores dicas. 'Chutando' eu aconselharia que vc revisasse as ligações (joins), se estão consistentes. 2012/8/13 Edson - Listas edson...@gmail.com Olá Pessoal, O meu select abaixo, esta duplicando as linhas, mesmo usando DISTINCT. select DISTINCT a.cd_fil,a.cd_ordem,a.dt_abertura, a.cd_cli,f.nm_cli,f.de_endereco,f.fone, a.vlr_final_os,a.vlr_desc_os,a.vlr_outros, a.vlr_tot_prod,a.vlr_tot_serv,a.servico_solicitado, a.de_ocorrencia, h.de_cid,a.cd_funcio,e.nm_funcio,b.cd_prod, g.de_prod,b.qtde_prod,b.vlr_unit_prod,b.perc_desc_prod, b.vlr_desc_prod,b.vlr_prod,b.total_prod, c.cd_servico,d.de_servico,c.qtd_serc,c.vlr_unit, c.perc_desc_serv,c.vlr_desc,c.vlr_serv, c.sub_total, CASE WHEN a.fg_tipo_os = 'INS' THEN 'INSTALAÇÃO' WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO' WHEN a.fg_tipo_os = 'MAN' THEN 'MANUTENÇÃO' WHEN a.fg_tipo_os = 'ACO' THEN 'À COBRAR' WHEN a.fg_tipo_os = 'GAR' THEN 'GARANTIA' WHEN a.fg_tipo_os = 'CON' THEN 'CONTRATO' WHEN a.fg_tipo_os = 'ORC' THEN 'ORÇAMENTO' ELSE 'OUTROS' END tipo_os, CASE WHEN a.fg_status_os = 'AB' THEN 'ABERTA' WHEN a.fg_status_os = 'FC' THEN 'FECHADA' ELSE 'INVÁLIDA' END status_os from osservhe a inner JOIN osprodut b on a.cd_ordem = b.cd_ordem inner join cliente f on a.cd_cli = f.cd_cli inner join vendfunc e on a.cd_funcio = e.cd_funcio inner join osservde c on a.cd_ordem = c.cd_ordem left join produto g on b.cd_prod = g.cd_prod left join servicos d on c.cd_servico = d.cd_servico inner join cidade h on f.cd_cid = h.cd_cid order by a.dt_abertura,a.cd_ordem ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Anselmo M. Silva ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Eu não posso ajuda-lo por que não consegui entender como estão organizadas suas tabelas. Tente explicar com mais detalhes ou, talvez, algum outro colega tenha entendido e consiga ajuda-lo. Osvaldo -- Tabela documento: CREATE TABLE documento ( codemp integer, codcto integer, codcli integer, codmovimento integer, codbarras varchar(60), coduser integer, dtcadastro date, hrcadastro time, ); -- Tabela malote CREATE TABLE malote ( codemp integer, codcto integer, codcli integer, codmovimento integer, nummalote varchar(60), numlacre varchar(60), coduser integer, dtcadastro date, hrcadastro time, ); Em ambas as tabelas, o codmovimento pode receber: 1 - Entrada, 2 - Saida, 3 - Baixa. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Danilo, o que você precisa fazer? Sebastian Webberhttp://swebber.me Date: Wed, 1 Aug 2012 11:20:22 -0300 From: danilo.dsg.go...@gmail.com To: pgbr-geral@listas.postgresql.org.br Subject: Re: [pgbr-geral] Ajuda com select Eu não posso ajuda-lo por que não consegui entender como estão organizadas suas tabelas. Tente explicar com mais detalhes ou, talvez, algum outro colega tenha entendido e consiga ajuda-lo. Osvaldo -- Tabela documento:CREATE TABLE documento(codemp integer,codcto integer,codcli integer,codmovimento integer,codbarras varchar(60), coduser integer,dtcadastro date,hrcadastro time,); -- Tabela maloteCREATE TABLE malote(codemp integer, codcto integer,codcli integer,codmovimento integer,nummalote varchar(60),numlacre varchar(60),coduser integer,dtcadastro date,hrcadastro time, ); Em ambas as tabelas, o codmovimento pode receber: 1 - Entrada, 2 - Saida, 3 - Baixa. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Em 01/08/12, Danilo Silvadanilo.dsg.go...@gmail.com escreveu: Eu não posso ajuda-lo por que não consegui entender como estão organizadas suas tabelas. Tente explicar com mais detalhes ou, talvez, algum outro colega tenha entendido e consiga ajuda-lo. Osvaldo -- Tabela documento: CREATE TABLE documento ( codemp integer, codcto integer, codcli integer, codmovimento integer, codbarras varchar(60), coduser integer, dtcadastro date, hrcadastro time, ); -- Tabela malote CREATE TABLE malote ( codemp integer, codcto integer, codcli integer, codmovimento integer, nummalote varchar(60), numlacre varchar(60), coduser integer, dtcadastro date, hrcadastro time, ); Em ambas as tabelas, o codmovimento pode receber: 1 - Entrada, 2 - Saida, 3 - Baixa. Quais os campos relacionam estas tabelas? São todos aqueles que tem o mesmo nome ou apenas alguns deles? Em suma: quais as chaves primárias e estrangeiras? De onde você obtém o nome do usuário? Por qt (por ex. em qtentrada) você quer dizer a quantidade de registros (count)? Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Quais os campos relacionam estas tabelas? Nenhum, são tabelas distintas. São todos aqueles que tem o mesmo nome ou apenas alguns deles? Em suma: quais as chaves primárias e estrangeiras? De onde você obtém o nome do usuário? Por qt (por ex. em qtentrada) você quer dizer a quantidade de registros (count)? Sim, é count, no caso de qtentrada é count da tabela documento onde codmovimento = 1, qtsaida_baixa é um count da tabela documento onde codmovimento 1, qtmalote é um count da tabela malote onde codmovimento = 1. No geral preciso saber quantos registros foram lidos por cada usuário, mas como esse processo envolve 2 tabelas (documento e malote) não sei como fazer (de forma elegante) esse select . Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
2012/8/1 Danilo Silva danilo.dsg.go...@gmail.com: São todos aqueles que tem o mesmo nome ou apenas alguns deles? Em suma: quais as chaves primárias e estrangeiras? Ou tu dás as estruturas completas, como pedido, ou fica difícil ajudar. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Pessoal, peço ajuda de vocês... Tenho uma tabela onde são inseridos as leituras de documentos (entrada, saida, baixa) e outra tabela com as leituras de malotes. Cada uma dessas tabelas possui o usuário que executou a leitura. Preciso efetuar um select que retorne as colunas: nome do usuario, quantidade de leitura de entrada, quantidade de leitura de saida e baixa (somatório), quantidade de leitura de malotes. Esse select ajudará na produtividade dos usuários. Exemplo: usuarioqtentrada qtsaida_baixa qtmalote C3PO 905 XYZ 12 15 ZÉ DAS COUVES 45 24 32 PostreSQL versão 8.2. Obrigado a todos. Danilo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
On 01-08-2012 00:08, Danilo Silva wrote: Tenho uma tabela onde são inseridos as leituras de documentos (entrada, saida, baixa) e outra tabela com as leituras de malotes. Cada uma dessas tabelas possui o usuário que executou a leitura. Preciso efetuar um select que retorne as colunas: nome do usuario, quantidade de leitura de entrada, quantidade de leitura de saida e baixa (somatório), quantidade de leitura de malotes. Esse select ajudará na produtividade dos usuários. Exemplo: Cadê o esquema das tabelas envolvidas? -- Euler Taveira de Oliveira - Timbira http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Em 01/08/12, Danilo Silvadanilo.dsg.go...@gmail.com escreveu: Pessoal, peço ajuda de vocês... Tenho uma tabela onde são inseridos as leituras de documentos (entrada, saida, baixa) e outra tabela com as leituras de malotes. Cada uma dessas tabelas possui o usuário que executou a leitura. Preciso efetuar um select que retorne as colunas: nome do usuario, quantidade de leitura de entrada, quantidade de leitura de saida e baixa (somatório), quantidade de leitura de malotes. Esse select ajudará na produtividade dos usuários. Exemplo: usuarioqtentrada qtsaida_baixa qtmalote C3PO 905 XYZ 12 15 ZÉ DAS COUVES 45 24 32 PostreSQL versão 8.2. Obrigado a todos. Danilo Eu não posso ajuda-lo por que não consegui entender como estão organizadas suas tabelas. Tente explicar com mais detalhes ou, talvez, algum outro colega tenha entendido e consiga ajuda-lo. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] ajuda com select
Pessoal poderiam me ajudar com uma select? Tabela com as colunas: a,b,c,data Todas as colunas fazem parte da chave. Como listar todos os dados menos o registro com a maior data? A minha intenção é excluir todos os registros, menos o ultimo (com a maior data). Eu só sei que posso conseguir o ultimo agrupando e pedindo o max(data) mas não sei como fazer para listar todos menos este. Obrigado pelas ideias... ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ajuda com select
Em 24/07/12, flaviofla...@atttransbordo.com.br escreveu: Pessoal poderiam me ajudar com uma select? Tabela com as colunas: a,b,c,data Todas as colunas fazem parte da chave. Como listar todos os dados menos o registro com a maior data? A minha intenção é excluir todos os registros, menos o ultimo (com a maior data). Eu só sei que posso conseguir o ultimo agrupando e pedindo o max(data) mas não sei como fazer para listar todos menos este. Obrigado pelas ideias... Use EXCEPT. SELECT a,b,c,data FROM sua_tabela EXCEPT SELECT a,b,c,MAX(data) FROM sua_tabela GROUP BY a, b, c; Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] ajuda com select
Obrigado Osvaldo Simples e direto. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select (crosstab)
Pessoal, boa tarde. Estou começando a utilizar o crosstab, porém estou com dificuldades para fazer o select desejado. Tenho uma tabela na seguinte estrutura: Filial Ano Mes Produto Qtde Gostaria de fazer um select que trouxesse o resultado dos meses em coluna e agrupados por Filial+Produto+Ano. O resultado ficaria asssim: Filial Produto Ano Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez 1 1 10 0 0 1 1 2 2 0 1 3 0 0 2 1 1 11 1 1 0 2 1 0 1 0 0 0 0 0 2 1 10 0 0 0 0 0 0 0 0 0 0 0 0 Alguém poderia me ajudar com este select, pois tenho até os seguinte momento o seguinte comando: select * from crosstab(' select Filial,Produto,Ano,Mes,Qtd from Tabela order by 1,2,3', 'select m from generate_series(1,12) m') as ( Filial integer, Produto integer, Ano integer, Jan integer, Fev integer, Mar integer, Abr integer, Mai integer, Jun integer, Jul integer, Ago integer, Set integer, Out integer, Nov integer, Dez integer ) Porém, não encontrei ainda um exemplo com mais de três colunas. Alguém poderia me ajudar com essa query? Obrigado! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select (crosstab)
On 26/9/2011 17:41, Thiago wrote: Pessoal, boa tarde. Estou começando a utilizar o crosstab, porém estou com dificuldades para fazer o select desejado. Tenho uma tabela na seguinte estrutura: Filial Ano Mes Produto Qtde Gostaria de fazer um select que trouxesse o resultado dos meses em coluna e agrupados por Filial+Produto+Ano. O resultado ficaria asssim: Filial Produto Ano Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez 1 1 10 0 0 1 1 2 2 0 1 3 0 0 2 1 1 11 1 1 0 2 1 0 1 0 0 0 0 0 2 1 10 0 0 0 0 0 0 0 0 0 0 0 0 Alguém poderia me ajudar com este select, pois tenho até os seguinte momento o seguinte comando: select * from crosstab(' select Filial,Produto,Ano,Mes,Qtd from Tabela order by 1,2,3', 'select m from generate_series(1,12) m') as ( Filial integer, Produto integer, Ano integer, Jan integer, Fev integer, Mar integer, Abr integer, Mai integer, Jun integer, Jul integer, Ago integer, Set integer, Out integer, Nov integer, Dez integer ) Porém, não encontrei ainda um exemplo com mais de três colunas. Alguém poderia me ajudar com essa query? Obrigado! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Galera, consegui resolver lendo um exemplo aqui do news mesmo. Deixando a primeira coluna como array eu consigo acessar os seus dados depois. Obrigado! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com Select
Bom dia a todos Estou tentando fazer uma select para obter alguns resultados e não consegui ainda gostaria da ajuda dos colegas. Segue a tabela: voo_idSERIAL, piloto_id INTEGER NOT NULL, parapente_id INTEGER NOT NULL, data_vooDATE NOT NULL, decolagem_id INTEGER NOT NULL, tempo VARCHAR(5) NOT NULL, dist_livreNUMERIC(9,3) NOT NULL, dist_olc NUMERIC(9,3) NOT NULL, pontos_xc NUMERIC(6,2) NOT NULL, Preciso retornar dessa tabela as sete maiores pontuação (pontos_xc) por piloto (piloto_id) e retornar a soma desses sete maiores vôos, tem caso que os pilotos tem mais do que sete vôos e outros menos, quando tiver menos de 7, retorna os que tiverem Exemplo como deve retornar: Piloto Total1° 2° 3° 4° 5° 6° 7° 2 468,63 107,85 89,60 87,72 85,27 42,86 29,33 25,00 4 465,69 117,54 66,95 65,85 62,06 54,47 53,32 43,50 1 367,50 103,11 61,30 60,29 44,81 34,73 31,76 28,50 3 305,1986,3372,09 64,63 35,89 32,21 10,04 5 189,1286,3637,87 34,33 25,56 8 176,5682,01 30,7314,85 14,20 11,39 10,197,19 9 167,1742,86 34,8328,52 27,40 26,56 7 139,59 104,16 27,43 6 150,7669,0639,7332,97 10 33,1023,10 11 29,4018,40 12 28,3116,31 13 29,2616,26 Obgrigado Anderson Camilo -- View this message in context: http://postgresql.1045698.n5.nabble.com/Ajuda-com-Select-tp4469995p4469995.html Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Obrigado pela dica. Nós já até temos um novo servidor com o PG 9 instalado, o problema é que ao restaurar o backup nele apresentou centenas de erros. Como o backup está um pouco grande e não podemos interromper a base, estamos ainda planejando como fazer essa troca. Abraços! Em 06/06/2011 15:45, Osvaldo Kussama escreveu: Em 06/06/11, Thiagozan...@farmaponte.com.br escreveu: Osvaldo, Eu utilizo o PG 8.1, acho que por ser versão antiga não está reconhecendo o array_agg(). Apenas para complementar: esta versão do PostgreSQL deixou de ter suporte em Novembro/2010. http://wiki.postgresql.org/wiki/PostgreSQL_Release_Support_Policy É aconselhável você planejar um upgrade para breve. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
2011/6/7 Thiago zan...@farmaponte.com.br: Como o backup está um pouco grande e não podemos interromper a base, pg_upgrade ou coisa semelhante? Foge-me o nome certo… -- skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org +55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803 BRAZIL GMT-3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Galera, boa tarde! Tenho a seguinte tabela de cupons e produtos: Filial Caixa Data Cupom Produto 1 1 01/04/2011 1 10 2 1 01/04/2011 2 10 1 1 01/04/2011 1 20 2 1 01/04/2011 3 30 1 1 01/04/2011 1 30 3 2 01/04/2011 7 20 Preciso de um select que me traga quais vendas que foram passadas no mesmo cupom os produtos (10,20,30). No caso da tabela de passei foi o cupom 1 da filial 1. Existe alguma forma de fazer isso por select? Obrigado! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Em 06/06/11, Thiagozan...@farmaponte.com.br escreveu: Galera, boa tarde! Tenho a seguinte tabela de cupons e produtos: Filial Caixa Data Cupom Produto 1 1 01/04/2011 1 10 2 1 01/04/2011 2 10 1 1 01/04/2011 1 20 2 1 01/04/2011 3 30 1 1 01/04/2011 1 30 3 2 01/04/2011 7 20 Preciso de um select que me traga quais vendas que foram passadas no mesmo cupom os produtos (10,20,30). No caso da tabela de passei foi o cupom 1 da filial 1. Existe alguma forma de fazer isso por select? Tente: SELECT filial, caixa, array_agg(cupom) FROM sua_tabela GROUP BY filial, caixa; Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Osvaldo, Eu utilizo o PG 8.1, acho que por ser versão antiga não está reconhecendo o array_agg(). Mesmo assim obrigado! Em 06/06/2011 15:16, Osvaldo Kussama escreveu: SELECT filial, caixa, array_agg(cupom) FROM sua_tabela GROUP BY filial, caixa; ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Em 06/06/11, Thiagozan...@farmaponte.com.br escreveu: Osvaldo, Eu utilizo o PG 8.1, acho que por ser versão antiga não está reconhecendo o array_agg(). Mesmo assim obrigado! Em 06/06/2011 15:16, Osvaldo Kussama escreveu: SELECT filial, caixa, array_agg(cupom) FROM sua_tabela GROUP BY filial, caixa; Então veja a definição de array_accum, inclusive o exemplo, em: http://www.postgresql.org/docs/8.1/static/xaggr.html Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Em 06/06/11, Thiagozan...@farmaponte.com.br escreveu: Osvaldo, Eu utilizo o PG 8.1, acho que por ser versão antiga não está reconhecendo o array_agg(). Apenas para complementar: esta versão do PostgreSQL deixou de ter suporte em Novembro/2010. http://wiki.postgresql.org/wiki/PostgreSQL_Release_Support_Policy É aconselhável você planejar um upgrade para breve. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Olá a todos! Estou precisando de um empurrão para criação de um select ... Alguem pode me ajudar? Tenho em uma tabela da seguinte forma: ID | PNAME | DESCRIPTION | NOTE | WEIGHT -+---+---+--+-- 3 | Bolt | ACT - A |4.5 | 2 3 | Bolt | ACT - A |5.0 | 2 3 | Bolt | ACT - C |3.0 | 2 3 | Bolt | ACT - C |1.0 | 2 3 | Bolt | ACT - B |2.0 | 1 3 | Bolt | ACT - B |0.5 | 1 Preciso recuperar essas informações da seguinte forma: ID | PNAME | ACT - A | WEIGHT | ACT - C | WEIGHT | ACT - B | WEIGHT -+---+-+--+-+---++-- 3 | Bolt | 9.5|2 | 4.0 | 2 | 2.5|1 Att Fabiano Fernandes -- View this message in context: http://postgresql.1045698.n5.nabble.com/Ajuda-com-select-tp4305614p4305614.html Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
2011/4/15 fabiano.fernandes cont...@fabianofernandes.adm.br: Preciso recuperar essas informações da seguinte forma: ID | PNAME | ACT - A | WEIGHT | ACT - C | WEIGHT | ACT - B | WEIGHT -+---+-+--+-+---++-- 3 | Bolt | 9.5 | 2 | 4.0 | 2 | 2.5 | 1 O óbvio seria com subconsultas e JOINs nessas subconsultas. Você queria de alguma outra forma? Por que acho que vai ser difícil. Roberto ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
2011/4/15 fabiano.fernandes cont...@fabianofernandes.adm.br: Preciso recuperar essas informações da seguinte forma: ID | PNAME | ACT - A | WEIGHT | ACT - C | WEIGHT | ACT - B | WEIGHT -+---+-+--+-+---++-- 3 | Bolt | 9.5 | 2 | 4.0 | 2 | 2.5 | 1 Utiliza as funções crosstab do módulo tablefunc do diretório contrib. -Leo -- Leonardo Cezar http://postgreslogia.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Segue um exemplo: SELECT t.menu[1] AS r_no_menu, t.menu[2] AS r_id_menu, t.menu[3] AS r_nu_posicao, t.menu[4] AS r_ed_url, t.menu[5] AS r_no_perfil, t.menu[6] AS r_id_perfil, t.menu[7] AS r_id_menu_pai, t.menu[8] AS r_no_menu_pai, t.cadastrar AS r_in_cadastrar, t.consultar AS r_in_consultar, t.editar AS r_in_editar, t.excluir AS r_in_excluir, t.imprimir AS r_in_imprimir FROM crosstab(' SELECT ARRAY[m.men_no_menu::text, m.men_id_menu::text, m.men_nu_posicao::text, m.men_ed_url::text, p.per_no_perfil::text, p.per_id_perfil::text, m.men_id_menu_pai::text, m2.men_no_menu::text] As menu, f.fun_tx_funcao::text As funcao, pmf.per_in_permissao As valor FROM sc_seguranca.tbfuncao f INNER JOIN sc_seguranca.tbpermissao pmf ON f.fun_co_funcao = pmf.fun_co_funcao INNER JOIN sc_seguranca.tbperfil p ON pmf.per_id_perfil = p.per_id_perfil INNER JOIN sc_seguranca.tbmenu m ON pmf.men_id_menu = m.men_id_menu LEFT JOIN sc_seguranca.tbmenu as m2 on m.men_id_menu_pai = m2.men_id_menu ORDER BY m.men_no_menu, p.per_no_perfil'::text, ' select f1.fun_tx_funcao as func from sc_seguranca.tbfuncao f1'::text) t(menu text[], cadastrar boolean, consultar boolean, editar boolean, excluir boolean, imprimir boolean); Espero ter ajudado. 2011/4/15 Leonardo Cezar lhce...@gmail.com 2011/4/15 fabiano.fernandes cont...@fabianofernandes.adm.br: Preciso recuperar essas informações da seguinte forma: ID | PNAME | ACT - A | WEIGHT | ACT - C | WEIGHT | ACT - B | WEIGHT -+---+-+--+-+---++-- 3 | Bolt | 9.5|2 | 4.0 | 2 | 2.5|1 Utiliza as funções crosstab do módulo tablefunc do diretório contrib. -Leo -- Leonardo Cezar http://postgreslogia.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Moisés Caribé Ribeiro AD, DBA asmoi...@gmail.com 71-91350152 MCTS 70-431 https://mcp.microsoft.com/authenticate/validatemcp.aspx Transcript ID: 879519 Access Code: 884D1F114FF24 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Olá Fabiano Avaliar se vale a pena ... (desempenho, custo e complexidade) Levando em consideração os dados que vc passou, verificar se atende ... /* Preciso recuperar essas informações da seguinte forma: ID | PNAME | ACT - A | WEIGHT | ACT - C | WEIGHT | ACT - B | WEIGHT -+---+-+--+-+---++-- 3 | Bolt | 9.5|2 | 4.0 | 2 | 2.5|1 */ /* DROP TABLE IF EXISTS teste; CREATE TABLE teste ( id integer , pname varchar(25) , descriptionvarchar(50) , note numeric(10,1) , weight integer ); INSERT INTO teste (id, pname, description, note, weight) VALUES ( 3 , 'Bolt' , 'ACT - A' ,4.5 , 2); INSERT INTO teste (id, pname, description, note, weight) VALUES ( 3 , 'Bolt' , 'ACT - A' ,5.0 , 2); INSERT INTO teste (id, pname, description, note, weight) VALUES ( 3 , 'Bolt' , 'ACT - C' ,3.0 , 2); INSERT INTO teste (id, pname, description, note, weight) VALUES ( 3 , 'Bolt' , 'ACT - C' ,1.0 , 2); INSERT INTO teste (id, pname, description, note, weight) VALUES ( 3 , 'Bolt' , 'ACT - B' ,2.0 , 1); INSERT INTO teste (id, pname, description, note, weight) VALUES ( 3 , 'Bolt' , 'ACT - B' ,0.5 , 1); */ SELECT * FROM teste; SELECT id , pname , sum(ACT - A) AS ACT - A , sum(weight_a) weight , sum(ACT - C) AS ACT - C , sum(weight_c) weight , sum(ACT - B) AS ACT - B , sum(weight_b) weight FROM ( SELECT id , pname , ACT - A , CASE WHEN ACT - A 0 THEN weight ELSE 0 END AS weight_a , ACT - C , CASE WHEN ACT - C 0 THEN weight ELSE 0 END AS weight_c , ACT - B , CASE WHEN ACT - B 0 THEN weight ELSE 0 END AS weight_b FROM ( SELECT id , pname , weight , sum ( CASE WHEN description = 'ACT - A' THEN note ELSE 0 END ) AS ACT - A , sum ( CASE WHEN description = 'ACT - C' THEN note ELSE 0 END ) AS ACT - C , sum ( CASE WHEN description = 'ACT - B' THEN note ELSE 0 END ) AS ACT - B FROM teste GROUP BY id , pname , description , weight ) AS x ) AS y GROUP BY id , pname Espero ter ajudado, Emerson Hermann Em 15 de abril de 2011 10:57, fabiano.fernandes cont...@fabianofernandes.adm.br escreveu: Olá a todos! Estou precisando de um empurrão para criação de um select ... Alguem pode me ajudar? Tenho em uma tabela da seguinte forma: ID | PNAME | DESCRIPTION | NOTE | WEIGHT -+---+---+--+-- 3 | Bolt | ACT - A | 4.5 | 2 3 | Bolt | ACT - A | 5.0 | 2 3 | Bolt | ACT - C | 3.0 | 2 3 | Bolt | ACT - C | 1.0 | 2 3 | Bolt | ACT - B | 2.0 | 1 3 | Bolt | ACT - B | 0.5 | 1 Preciso recuperar essas informações da seguinte forma: ID | PNAME | ACT - A | WEIGHT | ACT - C | WEIGHT | ACT - B | WEIGHT -+---+-+--+-+---++-- 3 | Bolt |
[pgbr-geral] Ajuda com select
Galera, bom dia. Tenho a seguinte tabela: Filial Dia_Semana 01 01 02 01 03 02 04 03 05 03 06 03 07 04 08 05 09 05 Preciso fazer um select nessa tabela que me retorne o seguinte resultado Dia01 Dia02 Dia03 Dia04 Dia05 Dia06 Dia07 0103040708null null 02null 05null 09null null null null 06null null null null Situação: Tenho uma tabela que armazena a filial e o dia da semana em que cada filial é faturada, o número de filiais vai ser N mas o número de colunas no dia da semana sempre vai ser 7, não tenho como utilizar a função crosstab pois estou ainda atrasado no PG 8.1 e pelo visto vou demorar para sair dele. Tem algum tipo de join de coluna para apenas mostrar o resultado, nem que eu faça subselects? Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Galera, bom dia. Seguinte, tenho uma tabela de itens de menu e gostaria de fazer um select que retornasse o resultado em forma de árvore, mais ou menos como no seguinte exemplo: Tabela ID IDPai Menu 1 0 Opcoes 2 0 Gerencial 3 1 Desconectar 4 1 Alterar senha 5 2 Criar usuarios 6 2 Liberar permissoes 7 6 Procurar 8 6 Qualquer coisa Com essa tabela gostaria de um select que me trouxesse o resultado ordenado primeiramente pelas raizes (registro com IDPai = 0) e depois pelos filhos, mas o problema é apenas uma ramificação, cada filho pode conter outros filhos e assim por diante. Por isso preciso que um select ou uma procedure me retorne o seguinte resultado: Resultado ID IDPai Menu 1 0 Opcoes 3 1 Desconectar 4 1 Alterar senha 2 0 Gerencial 5 2 Criar usuarios 7 5 Procurar 8 5 Qualquer coisa 6 2 Liberar permissoes Algo parecido com isso Alguém já passou por algo parecido e sabe como resolver, estou quebrando a cabeça aqui e está um pouco complicado. Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Olá, Em 6 de julho de 2010 11:47, Thiago zan...@farmaponte.com.br escreveu: Galera, bom dia. Seguinte, tenho uma tabela de itens de menu e gostaria de fazer um select que retornasse o resultado em forma de árvore, mais ou menos como no seguinte exemplo: Tabela ID IDPai Menu 1 0 Opcoes 2 0 Gerencial 3 1 Desconectar 4 1 Alterar senha 5 2 Criar usuarios 6 2 Liberar permissoes 7 6 Procurar 8 6 Qualquer coisa Com essa tabela gostaria de um select que me trouxesse o resultado ordenado primeiramente pelas raizes (registro com IDPai = 0) e depois pelos filhos, mas o problema é apenas uma ramificação, cada filho pode conter outros filhos e assim por diante. Por isso preciso que um select ou uma procedure me retorne o seguinte resultado: Resultado ID IDPai Menu 1 0 Opcoes 3 1 Desconectar 4 1 Alterar senha 2 0 Gerencial 5 2 Criar usuarios 7 5 Procurar 8 5 Qualquer coisa 6 2 Liberar permissoes Algo parecido com isso Alguém já passou por algo parecido e sabe como resolver, estou quebrando a cabeça aqui e está um pouco complicado. Qual versão do PG você está utilizando? Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
A seguinte: PostgreSQL 8.1.11 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20070626 (Red Hat 4.1.2-14) Obrigado. Em 06/07/2010 11:54, JotaComm escreveu: Olá, Em 6 de julho de 2010 11:47, Thiago zan...@farmaponte.com.br mailto:zan...@farmaponte.com.br escreveu: Galera, bom dia. Seguinte, tenho uma tabela de itens de menu e gostaria de fazer um select que retornasse o resultado em forma de árvore, mais ou menos como no seguinte exemplo: Tabela ID IDPai Menu 1 0 Opcoes 2 0 Gerencial 3 1 Desconectar 4 1 Alterar senha 5 2 Criar usuarios 6 2 Liberar permissoes 7 6 Procurar 8 6 Qualquer coisa Com essa tabela gostaria de um select que me trouxesse o resultado ordenado primeiramente pelas raizes (registro com IDPai = 0) e depois pelos filhos, mas o problema é apenas uma ramificação, cada filho pode conter outros filhos e assim por diante. Por isso preciso que um select ou uma procedure me retorne o seguinte resultado: Resultado ID IDPai Menu 1 0 Opcoes 3 1 Desconectar 4 1 Alterar senha 2 0 Gerencial 5 2 Criar usuarios 7 5 Procurar 8 5 Qualquer coisa 6 2 Liberar permissoes Algo parecido com isso Alguém já passou por algo parecido e sabe como resolver, estou quebrando a cabeça aqui e está um pouco complicado. Qual versão do PG você está utilizando? Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Olá, Em 6 de julho de 2010 11:47, Thiago zan...@farmaponte.com.br escreveu: Galera, bom dia. Seguinte, tenho uma tabela de itens de menu e gostaria de fazer um select que retornasse o resultado em forma de árvore, mais ou menos como no seguinte exemplo: Tabela ID IDPai Menu 1 0 Opcoes 2 0 Gerencial 3 1 Desconectar 4 1 Alterar senha 5 2 Criar usuarios 6 2 Liberar permissoes 7 6 Procurar 8 6 Qualquer coisa Com essa tabela gostaria de um select que me trouxesse o resultado ordenado primeiramente pelas raizes (registro com IDPai = 0) e depois pelos filhos, mas o problema é apenas uma ramificação, cada filho pode conter outros filhos e assim por diante. Por isso preciso que um select ou uma procedure me retorne o seguinte resultado: Resultado ID IDPai Menu 1 0 Opcoes 3 1 Desconectar 4 1 Alterar senha 2 0 Gerencial 5 2 Criar usuarios 7 5 Procurar 8 5 Qualquer coisa 6 2 Liberar permissoes Algo parecido com isso Alguém já passou por algo parecido e sabe como resolver, estou quebrando a cabeça aqui e está um pouco complicado. Lendo novamente o seu email não entendi muito bem o que você precisa :( Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Siga o caminho: http://explainextended.com/2009/05/29/hierarchical-queries-in-postgresql/ 2010/7/6 JotaComm jota.c...@gmail.com Olá, Em 6 de julho de 2010 11:47, Thiago zan...@farmaponte.com.br escreveu: Galera, bom dia. Seguinte, tenho uma tabela de itens de menu e gostaria de fazer um select que retornasse o resultado em forma de árvore, mais ou menos como no seguinte exemplo: Tabela ID IDPai Menu 1 0 Opcoes 2 0 Gerencial 3 1 Desconectar 4 1 Alterar senha 5 2 Criar usuarios 6 2 Liberar permissoes 7 6 Procurar 8 6 Qualquer coisa Com essa tabela gostaria de um select que me trouxesse o resultado ordenado primeiramente pelas raizes (registro com IDPai = 0) e depois pelos filhos, mas o problema é apenas uma ramificação, cada filho pode conter outros filhos e assim por diante. Por isso preciso que um select ou uma procedure me retorne o seguinte resultado: Resultado ID IDPai Menu 1 0 Opcoes 3 1 Desconectar 4 1 Alterar senha 2 0 Gerencial 5 2 Criar usuarios 7 5 Procurar 8 5 Qualquer coisa 6 2 Liberar permissoes Algo parecido com isso Alguém já passou por algo parecido e sabe como resolver, estou quebrando a cabeça aqui e está um pouco complicado. Lendo novamente o seu email não entendi muito bem o que você precisa :( Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Forte abraço, Aldemir Vieira == ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Entrei no site e lá me diz que funciona a partir do PG 8.3, no meu caso que utilizo o 8.1 não vai funcionar. Obriagado pela ajuda. Em 06/07/2010 12:28, Aldemir Vieira escreveu: Siga o caminho: http://explainextended.com/2009/05/29/hierarchical-queries-in-postgresql/ 2010/7/6 JotaComm jota.c...@gmail.com mailto:jota.c...@gmail.com Olá, Em 6 de julho de 2010 11:47, Thiago zan...@farmaponte.com.br mailto:zan...@farmaponte.com.br escreveu: Galera, bom dia. Seguinte, tenho uma tabela de itens de menu e gostaria de fazer um select que retornasse o resultado em forma de árvore, mais ou menos como no seguinte exemplo: Tabela ID IDPai Menu 1 0 Opcoes 2 0 Gerencial 3 1 Desconectar 4 1 Alterar senha 5 2 Criar usuarios 6 2 Liberar permissoes 7 6 Procurar 8 6 Qualquer coisa Com essa tabela gostaria de um select que me trouxesse o resultado ordenado primeiramente pelas raizes (registro com IDPai = 0) e depois pelos filhos, mas o problema é apenas uma ramificação, cada filho pode conter outros filhos e assim por diante. Por isso preciso que um select ou uma procedure me retorne o seguinte resultado: Resultado ID IDPai Menu 1 0 Opcoes 3 1 Desconectar 4 1 Alterar senha 2 0 Gerencial 5 2 Criar usuarios 7 5 Procurar 8 5 Qualquer coisa 6 2 Liberar permissoes Algo parecido com isso Alguém já passou por algo parecido e sabe como resolver, estou quebrando a cabeça aqui e está um pouco complicado. Lendo novamente o seu email não entendi muito bem o que você precisa :( Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Forte abraço, Aldemir Vieira == ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Olá, O que eu preciso é utilizar um select com recursividade, pois os registros são ligados com outros de acordo com o campo IDPai e na busca gostaria de trazer um select que trouxesse os registros ordenados pela raiz principal e seus N filhos. Em 06/07/2010 12:23, JotaComm escreveu: Olá, Em 6 de julho de 2010 11:47, Thiago zan...@farmaponte.com.br mailto:zan...@farmaponte.com.br escreveu: Galera, bom dia. Seguinte, tenho uma tabela de itens de menu e gostaria de fazer um select que retornasse o resultado em forma de árvore, mais ou menos como no seguinte exemplo: Tabela ID IDPai Menu 1 0 Opcoes 2 0 Gerencial 3 1 Desconectar 4 1 Alterar senha 5 2 Criar usuarios 6 2 Liberar permissoes 7 6 Procurar 8 6 Qualquer coisa Com essa tabela gostaria de um select que me trouxesse o resultado ordenado primeiramente pelas raizes (registro com IDPai = 0) e depois pelos filhos, mas o problema é apenas uma ramificação, cada filho pode conter outros filhos e assim por diante. Por isso preciso que um select ou uma procedure me retorne o seguinte resultado: Resultado ID IDPai Menu 1 0 Opcoes 3 1 Desconectar 4 1 Alterar senha 2 0 Gerencial 5 2 Criar usuarios 7 5 Procurar 8 5 Qualquer coisa 6 2 Liberar permissoes Algo parecido com isso Alguém já passou por algo parecido e sabe como resolver, estou quebrando a cabeça aqui e está um pouco complicado. Lendo novamente o seu email não entendi muito bem o que você precisa :( Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Em 6 de julho de 2010 11:59, Thiago zan...@farmaponte.com.br escreveu: A seguinte: PostgreSQL 8.1.11 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20070626 (Red Hat 4.1.2-14) Obrigado. Em 06/07/2010 11:54, JotaComm escreveu: Olá, Em 6 de julho de 2010 11:47, Thiago zan...@farmaponte.com.br mailto:zan...@farmaponte.com.br escreveu: Galera, bom dia. Seguinte, tenho uma tabela de itens de menu e gostaria de fazer um select que retornasse o resultado em forma de árvore, mais ou menos como no seguinte exemplo: Tabela ID IDPai Menu 1 0 Opcoes 2 0 Gerencial 3 1 Desconectar 4 1 Alterar senha 5 2 Criar usuarios 6 2 Liberar permissoes 7 6 Procurar 8 6 Qualquer coisa Com essa tabela gostaria de um select que me trouxesse o resultado ordenado primeiramente pelas raizes (registro com IDPai = 0) e depois pelos filhos, mas o problema é apenas uma ramificação, cada filho pode conter outros filhos e assim por diante. Por isso preciso que um select ou uma procedure me retorne o seguinte resultado: Resultado ID IDPai Menu 1 0 Opcoes 3 1 Desconectar 4 1 Alterar senha 2 0 Gerencial 5 2 Criar usuarios 7 5 Procurar 8 5 Qualquer coisa 6 2 Liberar permissoes Algo parecido com isso Alguém já passou por algo parecido e sabe como resolver, estou quebrando a cabeça aqui e está um pouco complicado. Qual versão do PG você está utilizando? Em primeiro lugar você está utilizando uma versão bastante antiga. O suporte a esta versão se encerrará em nov/2010 [1], planeje um upgrade de versão. Verifique a função connectby no módulo contrib tablefunc que, creio, atenderá a suas necessidades. (deve existir um diretório contrib em sua instalação do PostgreSQL) Osvaldo [1] http://wiki.postgresql.org/wiki/PostgreSQL_Release_Support_Policy ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com SELECT
Bom dia, Preciso selecionar o número de máquinas instaladas nos últimos seis meses, para cada um desses meses é necessário acumular o nº de máquinas instaladas até esse mês, tenho um select inicial que seleciona os últimos seis meses, porém não consigo acumular o valor: SELECT initcap(mectb10_dm_inventario.inv_mes_nm) AS mes, cast(mectb10_dm_inventario.inv_mes as text), count(distinct inv_maquina) AS maquinas_instaladas Essa linha conta o número de máquinas instaladas, mas só do mês específico FROM mectb10_dm_inventario WHERE inv_mes BETWEEN date_part('month',CURRENT_DATE)-6 AND date_part('month',CURRENT_DATE) GROUP BY inv_mes_nm, inv_mes ORDER BY inv_mes ASC _ ACESSE O MESSENGER DO SEU CELULAR AGORA MESMO. CLIQUE E VEJA AQUI UM PASSO A PASSO. http://celular.windowslive.com.br/messenger.asp?produto=Messengerutm_source=Live_Hotmailutm_medium=Taglineutm_content=ACESSEOMES83utm_campaign=MobileServices___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SELECT
Em 8 de junho de 2010 10:24, Tiago Kepe tiagok...@hotmail.com escreveu: Bom dia, Preciso selecionar o número de máquinas instaladas nos últimos seis meses, para cada um desses meses é necessário acumular o nº de máquinas instaladas até esse mês, tenho um select inicial que seleciona os últimos seis meses, porém não consigo acumular o valor: SELECT initcap(mectb10_dm_inventario.inv_mes_nm) AS mes, cast(mectb10_dm_inventario.inv_mes as text), count(distinct inv_maquina) AS maquinas_instaladas Essa linha conta o número de máquinas instaladas, mas só do mês específico FROM mectb10_dm_inventario WHERE inv_mes BETWEEN date_part('month',CURRENT_DATE)-6 AND date_part('month',CURRENT_DATE) GROUP BY inv_mes_nm, inv_mes ORDER BY inv_mes ASC Supondo que o que você esteja chamando de inv_mes seja ano/mês, utilize em sua cláusula WHERE: WHERE inv_mes::date BETWEEN date_trunc('month',CURRENT_DATE) AND date_trunc('month',CURRENT_DATE)-'6 months'::interval Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com SELECT
Em 8 de junho de 2010 12:51, Osvaldo Kussama osvaldo.kuss...@gmail.com escreveu: Em 8 de junho de 2010 10:24, Tiago Kepe tiagok...@hotmail.com escreveu: Bom dia, Preciso selecionar o número de máquinas instaladas nos últimos seis meses, para cada um desses meses é necessário acumular o nº de máquinas instaladas até esse mês, tenho um select inicial que seleciona os últimos seis meses, porém não consigo acumular o valor: SELECT initcap(mectb10_dm_inventario.inv_mes_nm) AS mes, cast(mectb10_dm_inventario.inv_mes as text), count(distinct inv_maquina) AS maquinas_instaladas Essa linha conta o número de máquinas instaladas, mas só do mês específico FROM mectb10_dm_inventario WHERE inv_mes BETWEEN date_part('month',CURRENT_DATE)-6 AND date_part('month',CURRENT_DATE) GROUP BY inv_mes_nm, inv_mes ORDER BY inv_mes ASC Supondo que o que você esteja chamando de inv_mes seja ano/mês, utilize em sua cláusula WHERE: WHERE inv_mes::date BETWEEN date_trunc('month',CURRENT_DATE) AND date_trunc('month',CURRENT_DATE)-'6 months'::interval Osvaldo Desculpe, resposta errada para seu problema. Faça uma junção entre uma tabela dos meses desejados (por. ex. utilizando oa função generate_series) e seu select utilizando o comparador = para o mês. Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Acho que não expressei direito: é o tamanho do disco onde a tablespace está. Fazia isso em Oracle mas não estou conseguindo no PG. Bene Em 27/05/2010 17:28, Osvaldo Kussama escreveu: Em 27 de maio de 2010 15:00, Prof. Benedito A. Cruzb...@cria.org.br escreveu: Creio que deve ser simples mas preciso de uma ajuda rápida numa query. Queria fazer uma consulta que retornasse todas as tablespaces cujo tamanho fosse menor que 1 TB e que que estivesse com menos de 15% de espaço livre. A versão do PostgreSQL é a 8.4. Uma dúvida: Como, ou onde, você especifica o tamanho de uma tablespace? Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Em 28 de maio de 2010 11:41, Prof. Benedito A. Cruz b...@cria.org.br escreveu: Acho que não expressei direito: é o tamanho do disco onde a tablespace está. Fazia isso em Oracle mas não estou conseguindo no PG. Bene Em 27/05/2010 17:28, Osvaldo Kussama escreveu: Em 27 de maio de 2010 15:00, Prof. Benedito A. Cruzb...@cria.org.br escreveu: Creio que deve ser simples mas preciso de uma ajuda rápida numa query. Queria fazer uma consulta que retornasse todas as tablespaces cujo tamanho fosse menor que 1 TB e que que estivesse com menos de 15% de espaço livre. A versão do PostgreSQL é a 8.4. Uma dúvida: Como, ou onde, você especifica o tamanho de uma tablespace? A função pg_tablespace_size(oid ou nome) [1] fornece o espaço em disco ocupado pela tablespace. Não sei como, de dentro do psql ou similar, obter o espaço livre no disco para calcular o percentual desejado. Osvaldo [1] http://www.postgresql.org/docs/current/interactive/functions-admin.html ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Em 28/05/2010 12:32, Osvaldo Kussama escreveu: Em 28 de maio de 2010 11:41, Prof. Benedito A. Cruzb...@cria.org.br escreveu: Acho que não expressei direito: é o tamanho do disco onde a tablespace está. Fazia isso em Oracle mas não estou conseguindo no PG. Bene Em 27/05/2010 17:28, Osvaldo Kussama escreveu: Em 27 de maio de 2010 15:00, Prof. Benedito A. Cruzb...@cria.org.br escreveu: Creio que deve ser simples mas preciso de uma ajuda rápida numa query. Queria fazer uma consulta que retornasse todas as tablespaces cujo tamanho fosse menor que 1 TB e que que estivesse com menos de 15% de espaço livre. A versão do PostgreSQL é a 8.4. Uma dúvida: Como, ou onde, você especifica o tamanho de uma tablespace? A função pg_tablespace_size(oid ou nome) [1] fornece o espaço em disco ocupado pela tablespace. Não sei como, de dentro do psql ou similar, obter o espaço livre no disco para calcular o percentual desejado. Oi Osvaldo, essa informação eu tenho em uma tabela. Osvaldo [1] http://www.postgresql.org/docs/current/interactive/functions-admin.html ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com Select
Oi pessoal, Tô precisando de ajuda pra fazer um select. Tenho uma tb que agrupa informações por cidade e para cada cidade eu tenho que selecionar a maior data da cidade e somar o valor de um campo para agrupar por estado ou regiao: Tentei fazer isso de vária formas, mas ainda não consegui, alguém tem uma idéia? Valew, Tiago Kepe. _ DEIXE SUAS CONVERSAS MAIS DIVERTIDAS. TRANSFORME AQUI SUAS FOTOS EM EMOTICONS, É GRÁTIS. http://ilm.windowslive.com.br/?ocid=ILM:ILM:Hotmail:Tagline:1x1:Tagline___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Em 27 de maio de 2010 10:06, Tiago Kepe tiagok...@hotmail.com escreveu: Oi pessoal, Tô precisando de ajuda pra fazer um select. Tenho uma tb que agrupa informações por cidade e para cada cidade eu tenho que selecionar a maior data da cidade e somar o valor de um campo para agrupar por estado ou regiao: Tentei fazer isso de vária formas, mas ainda não consegui, alguém tem uma idéia? Você poderia colocar um exemplo do que deseja? O que você deseja somar, por estado ou região, é apenas dos registros selecionados com maior data para cada cidade? Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Consegui resolver colocando uma subconsulta no FROM a qual pega a maior data, a solução ficou assim: SELECT to_char(CURRENT_DATE, 'DD/MM/') AS Brasil, sum(mectb11_dm_auditoria.aud_instaladas) as Instaladas, CASE WHEN sum(mectb11_dm_auditoria.aud_previstas) - sum(mectb11_dm_auditoria.aud_instaladas) 0 THEN 0 ELSE sum(mectb11_dm_auditoria.aud_previstas) - sum(mectb11_dm_auditoria.aud_instaladas) END AS Nao_instaladas FROM (select max(aud_data) as data, aud_inep as inep, from mectb11_dm_auditoria group by inep) temp, mectb11_dm_auditoria WHERE temp.data = mectb11_dm_auditoria.aud_data AND temp.inep = mectb11_dm_auditoria.aud_inep; Valew. Date: Thu, 27 May 2010 11:26:13 -0300 From: osvaldo.kuss...@gmail.com To: pgbr-geral@listas.postgresql.org.br Subject: Re: [pgbr-geral] Ajuda com Select Em 27 de maio de 2010 10:06, Tiago Kepe tiagok...@hotmail.com escreveu: Oi pessoal, Tô precisando de ajuda pra fazer um select. Tenho uma tb que agrupa informações por cidade e para cada cidade eu tenho que selecionar a maior data da cidade e somar o valor de um campo para agrupar por estado ou regiao: Tentei fazer isso de vária formas, mas ainda não consegui, alguém tem uma idéia? Você poderia colocar um exemplo do que deseja? O que você deseja somar, por estado ou região, é apenas dos registros selecionados com maior data para cada cidade? Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral _ DEIXE SUAS CONVERSAS MAIS DIVERTIDAS. TRANSFORME AQUI SUAS FOTOS EM EMOTICONS, É GRÁTIS. http://ilm.windowslive.com.br/?ocid=ILM:ILM:Hotmail:Tagline:1x1:Tagline___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Caros Creio que deve ser simples mas preciso de uma ajuda rápida numa query. Queria fazer uma consulta que retornasse todas as tablespaces cujo tamanho fosse menor que 1 TB e que que estivesse com menos de 15% de espaço livre. A versão do PostgreSQL é a 8.4. Agradeço antecipadamente, Bene -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Em 27 de maio de 2010 15:00, Prof. Benedito A. Cruz b...@cria.org.br escreveu: Creio que deve ser simples mas preciso de uma ajuda rápida numa query. Queria fazer uma consulta que retornasse todas as tablespaces cujo tamanho fosse menor que 1 TB e que que estivesse com menos de 15% de espaço livre. A versão do PostgreSQL é a 8.4. Uma dúvida: Como, ou onde, você especifica o tamanho de uma tablespace? Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Galera, boa tarde. Tenho uma tabela na seguinte estrutura. filial qtde data 01 101/04/2010 01 301/04/2010 01 302/04/2010 01 803/04/2010 01 505/04/2010 02 301/04/2010 02 404/04/2010 03 102/04/2010 Com esses dados gostaria de ter um select que me retornasse o resultado de vendas agrupadas por dia, até ai tudo tranquilo mas gostaria de trazer cada dia em uma coluna do select, da seguinte forma. FL D01 D02 D03 D04 D05 01 004 003 008 000 005 02 003 000 000 004 000 03 000 001 000 000 000 Será que exite alguma forma de fazer essa quebra, mesmo que seja por função, o período utilizado vai sempre ser um mês fechado. Aproveitando o gancho, eu poderia fazer isso com uma função mas ficaria algo muito complicado, pois faria da seguinte forma. Criaria um tipo para o retorno e traria os dados agrupados por data + filial e depois eu não saberia como setar o dia na variavel, existe alguma forma de fazer no psql como se faz por exemplo em delphi setar um nome do campo por uma string? Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Opa, Em 7 de abril de 2010 13:58, Thiago zan...@farmaponte.com.br escreveu: Galera, boa tarde. Tenho uma tabela na seguinte estrutura. filial qtde data 01 101/04/2010 01 301/04/2010 01 302/04/2010 01 803/04/2010 01 505/04/2010 02 301/04/2010 02 404/04/2010 03 102/04/2010 Com esses dados gostaria de ter um select que me retornasse o resultado de vendas agrupadas por dia, até ai tudo tranquilo mas gostaria de trazer cada dia em uma coluna do select, da seguinte forma. FL D01 D02 D03 D04 D05 01 004 003 008 000 005 02 003 000 000 004 000 03 000 001 000 000 000 Será que exite alguma forma de fazer essa quebra, mesmo que seja por função, o período utilizado vai sempre ser um mês fechado. O contrib tablefunc pode ser a sua solução. Aproveitando o gancho, eu poderia fazer isso com uma função mas ficaria algo muito complicado, pois faria da seguinte forma. Criaria um tipo para o retorno e traria os dados agrupados por data + filial e depois eu não saberia como setar o dia na variavel, existe alguma forma de fazer no psql como se faz por exemplo em delphi setar um nome do campo por uma string? Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Eu faço usando case junto com sum select filial , sum(case when data = '2010-04-01' then qtde else 0 end) as D01 , sum(case when data = '2010-04-02' then qtde else 0 end) as D02 from tabela group by 1 mas não é dinâmico Att Telles 2010/4/7 JotaComm jota.c...@gmail.com: Opa, Em 7 de abril de 2010 13:58, Thiago zan...@farmaponte.com.br escreveu: Galera, boa tarde. Tenho uma tabela na seguinte estrutura. filial qtde data 01 1 01/04/2010 01 3 01/04/2010 01 3 02/04/2010 01 8 03/04/2010 01 5 05/04/2010 02 3 01/04/2010 02 4 04/04/2010 03 1 02/04/2010 Com esses dados gostaria de ter um select que me retornasse o resultado de vendas agrupadas por dia, até ai tudo tranquilo mas gostaria de trazer cada dia em uma coluna do select, da seguinte forma. FL D01 D02 D03 D04 D05 01 004 003 008 000 005 02 003 000 000 004 000 03 000 001 000 000 000 Será que exite alguma forma de fazer essa quebra, mesmo que seja por função, o período utilizado vai sempre ser um mês fechado. O contrib tablefunc pode ser a sua solução. Aproveitando o gancho, eu poderia fazer isso com uma função mas ficaria algo muito complicado, pois faria da seguinte forma. Criaria um tipo para o retorno e traria os dados agrupados por data + filial e depois eu não saberia como setar o dia na variavel, existe alguma forma de fazer no psql como se faz por exemplo em delphi setar um nome do campo por uma string? Obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral []s -- JotaComm http://jotacomm.wordpress.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Obrigado aos amigos, foi solucionado da seguinte maneira: copy (select to_char( a017_dtem,'mmDD ), a017_vavn ... ) to E'\\windows\temp\tempor.txt' with delimiters '|' Todos os campos tipo data me retornam a string ano, mês, dia. ( 20080930 ) aí faço minha exportação. Agradecimento ao Willian, Renato... Adilson Nunes - Original Message - From: Marcelo Costa To: Comunidade PostgreSQL Brasileira Sent: Monday, September 29, 2008 11:39 PM Subject: Re: [pgbr-geral] Ajuda com select Olá, 2008/9/29 tetraetila® [EMAIL PROTECTED] Olá Pessoal Quando eu dou um select na minha tabela alguns campos retornam a data no formato: 2008-09-29 Como eu posso formatar esta data para não retornar os traços ( - ), separadores. Após o select preciso que a data venha apenas os números tipo: 20080929, pois gravo em txt e faço uma importação dos dados logo em seguida e este traços estão me atrapalhando. Use regexp_replace [1] select regexp_replace('2008-08-08',E'[\\-\\.]', '','g'); [1] http://www.regular-expressions.info/postgresql.html -- Marcelo Costa -- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
=# select to_char(current_date,'mmDD'); to_char -- 20080930 (1 registro) 2008/9/30 Lucas Fernando Vasconcelos de Arruda Amorim [EMAIL PROTECTED] Saudações, Acredito que seja interessante você ler. http://www.postgresql.org/docs/8.2/static/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT Uma maneira não muito recomendável de se fazer, mas funciona. set DATESTYLE to ISO; select replace(CAMPO,'-','') as CAMPO from TABELA where CAMPO is not null; tetraetila(R) escreveu: Olá Pessoal Quando eu dou um select na minha tabela alguns campos retornam a data no formato: 2008-09-29 Como eu posso formatar esta data para não retornar os traços ( - ), separadores. Após o select preciso que a data venha apenas os números tipo: 20080929, pois gravo em txt e faço uma importação dos dados logo em seguida e este traços estão me atrapalhando. Muito obrigado! Adilson Nunes ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- William Leite Araújo Analista de Banco de Dados - QualiConsult ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com Select
Boa tarde!! da uma olhada nesse link http://pgdocptbr.sourceforge.net/pg80/app-psql.html, mas para o que vc precisa deve ser isso: \a (enter) - alinha os registros \t (enter) - pode exibir ou não os nomes dos campos \f ; (enter) - delimitador, aqui usei ponto e virgula, mas vc pode usar outro delimitador de sua preferencia \o /diretorio_destino/nome_do_arquivo.extensao (enter) - direciona o arquivo para o local indicado select * from tabela espero ter ajudado. Em 30/09/08, Rodrigo Marins [EMAIL PROTECTED] escreveu: Preciso gravar o resultado de um select em um arquivo DBF. Alguém sabe como posso fazê-lo? No Postgres eu gravo para TXT. copy from (select * from tabela) to E'\\Temp\\arquivo.txt' Preciso salvar em DBF, exportar. Olha śo consegui essa referência, mas é em Perl: http://search.cpan.org/~janpaz/DBD-XBase-0.241/lib/XBase.pmhttp://search.cpan.org/%7Ejanpaz/DBD-XBase-0.241/lib/XBase.pm Utilitários de conversão: Pg2Xbase http://linux.dltube.net/download6013.html Ou você pode formatar a consulta com um delimitador pelo próprio COPY. COPY [ BINARY ] table [ WITH OIDS ] TO { 'filename' | stdout } [ [ USING ] DELIMITERS 'delimiter' ] [ WITH NULL AS 'null_string' ] Espero ter ajudado. -- Rodrigo Marins http://pgcon.postgresql.org.br/ http://portaldodesenvolvedor.com.br/ (11) 8747-7442 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Olá, Existem várias possibilidades, por exemplo: SELECT to_char(data,'MMDD') FROM tabela; []s 2008/9/29 tetraetila(R) [EMAIL PROTECTED]: Olá Pessoal Quando eu dou um select na minha tabela alguns campos retornam a data no formato: 2008-09-29 Como eu posso formatar esta data para não retornar os traços ( - ), separadores. Após o select preciso que a data venha apenas os números tipo: 20080929, pois gravo em txt e faço uma importação dos dados logo em seguida e este traços estão me atrapalhando. Muito obrigado! Adilson Nunes ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- João Paulo www.dextra.com.br/postgres PostgreSQL ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com select
Olá Pessoal Quando eu dou um select na minha tabela alguns campos retornam a data no formato: 2008-09-29 Como eu posso formatar esta data para não retornar os traços ( - ), separadores. Após o select preciso que a data venha apenas os números tipo: 20080929, pois gravo em txt e faço uma importação dos dados logo em seguida e este traços estão me atrapalhando. Muito obrigado! Adilson Nunes ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Ajuda com Select
Olá pessoal! Preciso gravar o resultado de um select em um arquivo DBF. Alguém sabe como posso fazê-lo? No Postgres eu gravo para TXT. copy from (select * from tabela) to E'\\Temp\\arquivo.txt' Preciso salvar em DBF, exportar. Muito obrigado! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Olá, 2008/9/29 tetraetila(R) [EMAIL PROTECTED] Olá Pessoal Quando eu dou um select na minha tabela alguns campos retornam a data no formato: 2008-09-29 Como eu posso formatar esta data para não retornar os traços ( - ), separadores. Após o select preciso que a data venha apenas os números tipo: 20080929, pois gravo em txt e faço uma importação dos dados logo em seguida e este traços estão me atrapalhando. Use regexp_replace [1] select regexp_replace('2008-08-08',E'[\\-\\.]', '','g'); [1] http://www.regular-expressions.info/postgresql.html -- Marcelo Costa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Olá Adilson Após o select preciso que a data venha apenas os números tipo: 20080929 não sei se é recomendado mais vc consegue esse resultado fazendo assim: select replace(now(), '-', '') abraços ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Saudações, Acredito que seja interessante você ler. http://www.postgresql.org/docs/8.2/static/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT Uma maneira não muito recomendável de se fazer, mas funciona. set DATESTYLE to ISO; select replace(CAMPO,'-','') as CAMPO from TABELA where CAMPO is not null; tetraetila® escreveu: Olá Pessoal Quando eu dou um select na minha tabela alguns campos retornam a data no formato: 2008-09-29 Como eu posso formatar esta data para não retornar os traços ( - ), separadores. Após o select preciso que a data venha apenas os números tipo: 20080929, pois gravo em txt e faço uma importação dos dados logo em seguida e este traços estão me atrapalhando. Muito obrigado! Adilson Nunes ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com select
Ok Euler! Deu certo -- Edinho Euler Taveira de Oliveira [EMAIL PROTECTED] escreveu: Edinho - Analista wrote: select apt_help_he.no_ordem,apt_help _he.dt_ordem, apt_help_he.cd_equip,equipto.no_serie, apt_help_he.cd_depto, depto.de_depto,apt_help_he.hora_solicita, apt_help_he.objeto, apt_help_he.prioridade,apt_help_he.user_solicita, apt_help_he.de_obs from apt_help_he left join equipto on equipto.cd_equip = apt_help_he.cd_equip left JOIN depto ON depto.cd_depto = apt_help_he.cd_depto and ^^^ Que tal alterar o AND para um WHERE ou utilizar parênteses para mudar a ordem de avaliação das junções. apt_help_he.dt_ordem BETWEEN to_date('02/08/2007','DD/MM/') and to_date('26/08/2007','DD/MM/') AND apt_help_he.fg_ordem IN (3) order by apt_help_he.no_ordem,apt_help_he.dt_ordem PS é assunto *novo*, crie um *novo* e-mail. Isso só bagunça o histórico. -- Euler Taveira de Oliveira http://www.timbira.com/ ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Assine - [EMAIL PROTECTED] Flickr agora em português. Você clica, todo mundo vê. Saiba mais.___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral