mariolt 0 Report post Posted January 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. Share this post Link to post Share on other sites
visitante_php 0 Report post Posted January 27, 2012 vamos supor q sua tabela tem campo tempo (datetime) e acesso (int) select * from tabela order by acesso desc Share this post Link to post Share on other sites
Danilo Soncini 15 Report post Posted January 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) Share this post Link to post Share on other sites
Andrey Knupp Vital 136 Report post Posted January 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) Share this post Link to post Share on other sites
visitante_php 0 Report post Posted January 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.... Share this post Link to post Share on other sites
Motta 645 Report post Posted January 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 Share this post Link to post Share on other sites
mariolt 0 Report post Posted January 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 Share this post Link to post Share on other sites
Andrey Knupp Vital 136 Report post Posted January 28, 2012 @mariolt, você chegou a testar o código SQL que postei .. ? Share this post Link to post Share on other sites
Motta 645 Report post Posted January 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 Share this post Link to post Share on other sites
mariolt 0 Report post Posted January 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. Share this post Link to post Share on other sites
Motta 645 Report post Posted January 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. Share this post Link to post Share on other sites
mariolt 0 Report post Posted January 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 Share this post Link to post Share on other sites
Motta 645 Report post Posted January 29, 2012 Confesso que não entendi, mas se funcionou deixa quieto. Share this post Link to post Share on other sites
visitante_php 0 Report post Posted January 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... Share this post Link to post Share on other sites