mariolt 0 Denunciar post Postado Janeiro 27, 2012 Pessoal, Estou fazendo um select cujo o objetivo é saber a hora que teve o maior movimento de usuarios. A tabela possui o seguintes campos: DATA | HORA | ACESSO o resultado tem que sair assim: 25/12/2011 11:00 190 26/12/2011 11:00 150 27/12/2011 10:00 167 .. 31/12/2011 09:00 180 e assim vai.. alguma sugestão de como chegou nesses dados? tentei usar a seguinte instrução: select CDATE, CTIME, MAX(OMGWSERL) from tb_mgwi where OBJECT = '20.27.38.1:2944' group by CDATE CDATE,CTIME,MAX(OMGWSERL) 2011-11-22,00:00:00,19 2011-11-23,01:00:00,21 2011-11-24,01:00:00,22 2011-11-25,00:00:00,19 2011-11-26,00:00:00,8 2011-11-27,00:00:00,4 2011-11-28,00:00:00,19 2011-11-29,00:00:00,21 Até agrupo as datas, porem o horario ficou errado. O horario no relatorio não bate com o horario correto da leitura da quantidade de acesso. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Janeiro 27, 2012 vamos supor q sua tabela tem campo tempo (datetime) e acesso (int) select * from tabela order by acesso desc Compartilhar este post Link para o post Compartilhar em outros sites
Danilo Soncini 15 Denunciar post Postado Janeiro 27, 2012 Acho que é isso que vocÊ queria não entendi direito como sua tabela esta. SELECT DATE(CDATA), HOUR(CDATA) , COUNT(*) FROM TABELA GROUP BY DATE(CDATA), HOUR(CDATA) Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Janeiro 27, 2012 select * from tabela order by acesso desc Errado, ele não quer o número de acessos ordenado. SELECT DATE(CDATA), HOUR(CDATA) , COUNT(*) FROM TABELA GROUP BY DATE(CDATA), HOUR(CDATA) Errado também, leia: Estou fazendo um select cujo o objetivo é saber a hora que teve o maior movimento de usuarios. Eis a solução mysql> select * from acessos; +---------------------+---------+ | horario | acessos | +---------------------+---------+ | 2011-11-22 00:00:00 | 19 | | 2011-11-23 01:00:00 | 21 | | 2011-11-24 01:00:00 | 22 | | 2011-11-25 00:00:00 | 19 | | 2011-11-26 00:00:00 | 8 | | 2011-11-27 00:00:00 | 4 | | 2011-11-28 00:00:00 | 19 | | 2011-11-29 00:00:00 | 21 | +---------------------+---------+ 8 rows in set (0.00 sec) mysql> select sum(acessos), horario from acessos group by hour(horario); +--------------+---------------------+ | sum(acessos) | horario | +--------------+---------------------+ | 90 | 2011-11-22 00:00:00 | | 43 | 2011-11-23 01:00:00 | +--------------+---------------------+ 2 rows in set (0.00 sec) Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Janeiro 27, 2012 Estou fazendo um select cujo o objetivo é saber a hora que teve o maior movimento de usuarios. exatamente, ordenando de forma decrescente o numero de acesso ele vai obter a hora.... Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 27, 2012 Seria ... SELECT HOUR(CDATA) , COUNT(*) QTD FROM TABELA GROUP BY HOUR(CDATA) ORDER BY 2 DESC OU SELECT HORA,AVG(QTD) MEDIA FROM (SELECT DATE(CDATA) DATA, HOUR(CDATA) HORA, COUNT(*) QTD FROM TABELA GROUP BY DATE(CDATA), HOUR(CDATA)) GROUP BY HORA ORDER BY 2 Compartilhar este post Link para o post Compartilhar em outros sites
mariolt 0 Denunciar post Postado Janeiro 28, 2012 exatamente, ordenando de forma decrescente o numero de acesso ele vai obter a hora.... Não exatamente, preciso sim da hora que foi registrado o maior movimento, mas tem que ser dentro do dia em questão. Por isso que eu estou procurando algum algoritimo no sql para fazer essa consulta. Aqui pode ser vista uma planilha com um exemplo do relatorio que preciso. Agradeço o empenho de todos! abraço Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Janeiro 28, 2012 @mariolt, você chegou a testar o código SQL que postei .. ? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 28, 2012 Não exatamente, preciso sim da hora que foi registrado o maior movimento, mas tem que ser dentro do dia em questão. Por isso que eu estou procurando algum algoritimo no sql para fazer essa consulta. SELECT HOUR(CDATA) , COUNT(*) QTD FROM TABELA WHERE CDATA = '....' GROUP BY HOUR(CDATA) ORDER BY 2 DESC Compartilhar este post Link para o post Compartilhar em outros sites
mariolt 0 Denunciar post Postado Janeiro 28, 2012 @mariolt, você chegou a testar o código SQL que postei .. ? Sim, testei sim porém a hora fica sempre 0:00. SELECT HOUR(CDATA) , COUNT(*) QTD FROM TABELA WHERE CDATA = '....' GROUP BY HOUR(CDATA) ORDER BY 2 DESC beleza Motta, se eu quisesse pegar a média traquilo pra fazer. Quero pegar o valor MAXIMO por dia, por hora dentro de um período. As análises que terei que fazer é de um período sempre acima de um dia. Tá osso, dois dias que estou tentando achar esse algoritimo. Agradeço a colaboração de todos. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 28, 2012 Sim, testei sim porém a hora fica sempre 0:00. O campo de data CDATA foi gravado com a hora ? Se não foi não há obter a informação. Talvez o campo a ser usado seja o CTIME. Compartilhar este post Link para o post Compartilhar em outros sites
mariolt 0 Denunciar post Postado Janeiro 29, 2012 Sim, testei sim porém a hora fica sempre 0:00. O campo de data CDATA foi gravado com a hora ? Se não foi não há obter a informação. Talvez o campo a ser usado seja o CTIME. Achei esse tutorial aqui no iMaster e resolvi meu problema com uma subquery. Aquem possa se interessar, segue meu select: SELECT m1.data, m1.hora, m1.valor FROM tb_mgwi AS m1 JOIN ( SELECT , data, MAX(valor) AS valor FROM tabela WHERE data BETWEEN '2011-10-25' AND '2011-10-31' GROUP BY data ORDER BY data) AS derivada ON m1.cdate = derivada.cdate AND m1.omgwseiz = derivada.valor agradeço a todos pela colaboração! abraços Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 29, 2012 Confesso que não entendi, mas se funcionou deixa quieto. Compartilhar este post Link para o post Compartilhar em outros sites
visitante_php 0 Denunciar post Postado Janeiro 30, 2012 Não exatamente, preciso sim da hora que foi registrado o maior movimento, mas tem que ser dentro do dia em questão. Por isso que eu estou procurando algum algoritimo no sql para fazer essa consulta. Aqui pode ser vista uma planilha com um exemplo do relatorio que preciso. Agradeço o empenho de todos! abraço releia o q eu escrevi... Compartilhar este post Link para o post Compartilhar em outros sites