Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mariolt

[Resolvido] Select Mysql

Recommended Posts

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

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
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

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

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
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, 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

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

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

Confesso que não entendi, mas se funcionou deixa quieto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.