Re: [pgbr-geral] Fwd: select com distinct no proximo valor alterado
2011/11/30 Bruno Silva bemanuel...@gmail.com Foi mal, nova versão: select data,mem from ( SELECT row_number() OVER (ORDER BY data ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) as linha, first_value(mem) OVER ( ORDER BY data ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) as anterior,* FROM memo order by data ) as janela WHERE anteriormem ORDER BY data; data | mem -+-- 2011-11-21 15:22:00 | 1049 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1049 (8 rows) Este funcionou beleza, exceto pelo fato de que ele nao retorna o primeiro registro, no caso o de 2011-11-21 15:21:00. Mas tirando isto, funcionou perfeitamente. Para o primeiro registro nao tem muita importancia nao, mas, se voce souber um jeito de inclui-lo seria legal =). Meu problema foi resolvido com este script. Agora vou estudar como a funcao OVER faz a magica aqui =). Obrigado a todos voces pela ajuda!! Abraços!!! Bruno E. A. Silva. -- Moisés P. Sena (Analista e desenvolvedor de sistemas WEB e mobile) http://www.moisespsena.com http://linux.moisespsena.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] Fwd: select com distinct no proximo valor alterado
Desculpe a demora em responder pessoal! Mas obrigado a todos vocês!! Em 22 de novembro de 2011 14:01, Paulo Vitor Bettini de Albuqerque Lima paulovitor...@gmail.com escreveu: select min(data), mem from usodememoria group by mem Eu tentei assim mas nao chega ao resultado esperado. Obrigado! Atenciosamente, Paulo Vitor Bettini de Albuquerque Lima http://about.me/paulolima -- Moisés P. Sena (Analista e desenvolvedor de sistemas WEB e mobile) http://www.moisespsena.com http://linux.moisespsena.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] Fwd: select com distinct no proximo valor alterado
Bom dia. Segue o select que aqui deu certo, qualquer coisa posta ai. select * from ( select distinct(tp.mem) as mem,min(tp.data) as data from tmp.tb_tmp tp group by tp.mem having count(tp.mem) 1 --se quiser apenas os que tiveram modificacao ) as foo order by mem,data Quase funcionou, exceto por um detalhe: - Em 2011-11-21 15:34:00, mem 1054 volta a repetir. ele deveria ter tambem entrado no resultado, ou seja: eu teria 2 saidas para 1054, uma as 15:26:00 e outra as 15:34:00. Abaixo é o resultado que preciso ter: data | mem ---+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 2011-11-21 15:25:00 | 1052 **2011-11-21 15:26:00 | 1054* 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 * *2011-11-21 15:34:00 | 1054* De qualquer forma, valeu muito!!! Abraços, Espero que te ajude. Abraços! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Moisés P. Sena (Analista e desenvolvedor de sistemas WEB e mobile) http://www.moisespsena.com http://linux.moisespsena.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] Fwd: select com distinct no proximo valor alterado
Olá, Em 29 de novembro de 2011 10:09, Moisés P. Sena moisesps...@gmail.comescreveu: Bom dia. Segue o select que aqui deu certo, qualquer coisa posta ai. select * from ( select distinct(tp.mem) as mem,min(tp.data) as data from tmp.tb_tmp tp group by tp.mem having count(tp.mem) 1 --se quiser apenas os que tiveram modificacao ) as foo order by mem,data Quase funcionou, exceto por um detalhe: - Em 2011-11-21 15:34:00, mem 1054 volta a repetir. ele deveria ter tambem entrado no resultado, ou seja: eu teria 2 saidas para 1054, uma as 15:26:00 e outra as 15:34:00. Abaixo é o resultado que preciso ter: data | mem ---+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 2011-11-21 15:25:00 | 1052 **2011-11-21 15:26:00 | 1054* 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 * *2011-11-21 15:34:00 | 1054* De qualquer forma, valeu muito!!! Não entendi. O que você precisa como resultado? É uma ou mais linhas por mem? Qual é a lógica que precisa ser utilizada? Abraços, Espero que te ajude. Abraços! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Moisés P. Sena (Analista e desenvolvedor de sistemas WEB e mobile) http://www.moisespsena.com http://linux.moisespsena.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Abraços -- 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] Fwd: select com distinct no proximo valor alterado
Em 29 de novembro de 2011 10:56, JotaComm jota.c...@gmail.com escreveu: Olá, Não entendi. O que você precisa como resultado? É uma ou mais linhas por mem? Qual é a lógica que precisa ser utilizada? A Lógica é esta: Meu ambiente real: Tenho um script que a cada 1 minuto grava na tabela usodememoria a data atual (que o script esta executando) e quantidade de memoria RAM utilizada. Esta tabela funciona como um log. No final do dia, eu preciso gravar em uma outra tabela apenas o uso de memoria alterado ou seja: a) Durante o dia e gravei os seguintes usos de memoria: data | mem ---+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 2011-11-21 15:23:00 | 1049 2011-11-21 15:24:00 | 1049 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 2011-11-21 15:27:00 | 1054 2011-11-21 15:28:00 | 1054 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:31:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1049 Observe que: 1) As 15:21H a memoria usada era 1038 2) As 15:22H era 1049 e permaneceu assim ate 15:25H cujo valor foi para 1052 3) De 15:25H foi subindo ate as 15:33H com valor em 1065 4) Finalmente as 15:34H, a memoria usada voltou para 1049 No meu relatorio eu preciso remover os momentos em que o uso de memoria permanece constante, como de 15:22H ate as 15:25H. Na tabela final eu preciso gravar apenas os momentos que sofreram alteracoes, e nao os momentos constantes, que neste caso, seria o resultado abaixo: data | mem ---+-- 2011-11-21 15:21:00 | 1038 * 2011-11-21 15:22:00 | 1049 ** 2011-11-21 15:25:00 | 1052 *2011-11-21 15:26:00 | 1054 ** 2011-11-21 15:29:00 | 1065 * 2011-11-21 15:30:00 | 1080 ** 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 * 2011-11-21 15:34:00 | 1049 *** (*) momentos de memoria constante (**) finalmente a memoria utilizada diminui OBS.: os asteriscos (*) nao fazem parte do select, são apenas para demonstrar o momentos de constancia da memoria. Observe que os momentos em que a memoria permaneceu constante foram removidos, ficando apenas os instantes de alteração no uso da memoria. Abraços, -- Moisés P. Sena (Analista e desenvolvedor de sistemas WEB e mobile) http://www.moisespsena.com http://linux.moisespsena.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] Fwd: select com distinct no proximo valor alterado
Em 29 de novembro de 2011 20:17, Moisés P. Sena moisesps...@gmail.com escreveu: data | mem ---+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 * 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 * 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 * 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1049 ** . Acho que uma coisa bem simples pode resolver: select min(data) as 'data', mem from tabela group by mem order by 1; -- Marcone Peres - DBA http://www.linkedin.com/in/marconeperes @marconeperes (61) 8146-0028 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Fwd: select com distinct no proximo valor alterado
2011/11/29 Marcone marconepe...@gmail.com Acho que uma coisa bem simples pode resolver: select min(data) as 'data', mem from tabela group by mem order by 1; Nao funcionou, Os registros abaixo nao apareceram no resultado: data | mem --+-- 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1049 veja o resultado moi= select min(data) as data, mem from usodememoria group by mem order by 1; data | mem -+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:32:00 | 1073 (7 rows) -- Marcone Peres - DBA http://www.linkedin.com/in/marconeperes @marconeperes (61) 8146-0028 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Moisés P. Sena (Analista e desenvolvedor de sistemas WEB e mobile) http://www.moisespsena.com http://linux.moisespsena.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] Fwd: select com distinct no proximo valor alterado
Tá feio pra caramba, mas seria mais ou menos isso? select case when anteriormem then data else null end,case when anteriormem then mem else null end as memo from ( select row_number() OVER (ORDER BY data ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) as linha,first_value(mem) OVER ( ORDER BY data ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) as anterior,* from memo order by data ) as janela WHERE 1 is not null ORDER BY memo; 2011/11/29 Moisés P. Sena moisesps...@gmail.com Talvez nao me expressei direito, mas veja bem, até as 15:32H o resultado esta correto, entretanto, as 15:33H o uso de memoria voltou para 1064 e em 15:34 voltou para 1049. As 15:33H e as 15:34H houve alteração nos valores da memoria e ele nao foi registrado no resultado. Vou explicar de outro jeito: Tenho um log que grava tudo, entretanto que obter apenas os momentos em que os dados deste log onde mem sofrem alteração, na ordem desta alteração. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Fwd: select com distinct no proximo valor alterado
Corrigindo: select case when anteriormem then data else null end as dia,case when anteriormem then mem else null end as memo from ( select row_number() OVER (ORDER BY data ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) as linha,first_value(mem) OVER ( ORDER BY data ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) as anterior,* from memo order by data ) as janela where anteriormem ORDER BY memo; Bruno E. A. 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] Fwd: select com distinct no proximo valor alterado
Foi mal, nova versão: select data,mem from ( SELECT row_number() OVER (ORDER BY data ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) as linha, first_value(mem) OVER ( ORDER BY data ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) as anterior,* FROM memo order by data ) as janela WHERE anteriormem ORDER BY data; data | mem -+-- 2011-11-21 15:22:00 | 1049 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1049 (8 rows) Bruno E. A. 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] Fwd: select com distinct no proximo valor alterado
On 22/11/2011 13:56, Moisés P. Sena wrote: Boa tarde pessoal! os seguintes dados: $ select * from usodememoria; data | mem ---+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 2011-11-21 15:23:00 | 1049 2011-11-21 15:24:00 | 1049 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 2011-11-21 15:27:00 | 1054 2011-11-21 15:28:00 | 1054 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:31:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1054 Preciso fazer um select que me retorne, agrupando conforme o valor de mem e a data, onde mem sofre alteração na data posterior. O resultado abaixo: data | mem ---+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1054 Já tentei de várias formas fazer com distinct e nao consegui chegar nem perto disto. Nao estou conseguindo montar a logica do select. Alguém pode me ajudar com isto?? Abraços Bom dia. Segue o select que aqui deu certo, qualquer coisa posta ai. select * from ( select distinct(tp.mem) as mem,min(tp.data) as data from tmp.tb_tmp tp group by tp.mem having count(tp.mem) 1 --se quiser apenas os que tiveram modificacao ) as foo order by mem,data Espero que te ajude. Abraços! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Fwd: select com distinct no proximo valor alterado
Boa tarde pessoal! os seguintes dados: $ select * from usodememoria; data | mem ---+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 2011-11-21 15:23:00 | 1049 2011-11-21 15:24:00 | 1049 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 2011-11-21 15:27:00 | 1054 2011-11-21 15:28:00 | 1054 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:31:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1054 Preciso fazer um select que me retorne, agrupando conforme o valor de mem e a data, onde mem sofre alteração na data posterior. O resultado abaixo: data | mem ---+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1054 Já tentei de várias formas fazer com distinct e nao consegui chegar nem perto disto. Nao estou conseguindo montar a logica do select. Alguém pode me ajudar com isto?? Abraços, -- Moisés P. Sena (Analista e desenvolvedor de sistemas WEB e mobile) http://www.moisespsena.com http://linux.moisespsena.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] Fwd: select com distinct no proximo valor alterado
select min(data), mem from usodememoria group by mem Atenciosamente, Paulo Vitor Bettini de Albuquerque Lima http://about.me/paulolima Em 22 de novembro de 2011 13:56, Moisés P. Sena moisesps...@gmail.comescreveu: Boa tarde pessoal! os seguintes dados: $ select * from usodememoria; data | mem ---+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 2011-11-21 15:23:00 | 1049 2011-11-21 15:24:00 | 1049 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 2011-11-21 15:27:00 | 1054 2011-11-21 15:28:00 | 1054 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:31:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1054 Preciso fazer um select que me retorne, agrupando conforme o valor de mem e a data, onde mem sofre alteração na data posterior. O resultado abaixo: data | mem ---+-- 2011-11-21 15:21:00 | 1038 2011-11-21 15:22:00 | 1049 2011-11-21 15:25:00 | 1052 2011-11-21 15:26:00 | 1054 2011-11-21 15:29:00 | 1065 2011-11-21 15:30:00 | 1080 2011-11-21 15:32:00 | 1073 2011-11-21 15:33:00 | 1065 2011-11-21 15:34:00 | 1054 Já tentei de várias formas fazer com distinct e nao consegui chegar nem perto disto. Nao estou conseguindo montar a logica do select. Alguém pode me ajudar com isto?? Abraços, -- Moisés P. Sena (Analista e desenvolvedor de sistemas WEB e mobile) http://www.moisespsena.com http://linux.moisespsena.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