Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Média de horas mais acessadas


Ederson dos Santos

Pergunta

Olá amigos, sou novo no fórum e preciso tirar uma dúvida.

tenho armazenado em uma tabela data e hora de todos os acessos ao site neste formato (2011-05-27 12:30:07). Preciso fazer um select retornando as horas de maior movimento.

Agradeço a quem puder me dar esta dica.

Att

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Olá amigos, sou novo no fórum e preciso tirar uma dúvida.

tenho armazenado em uma tabela data e hora de todos os acessos ao site neste formato (2011-05-27 12:30:07). Preciso fazer um select retornando as horas de maior movimento.

Agradeço a quem puder me dar esta dica.

Att

SELECT DISTINCT TIME(datatipotimestamp) AS HORA FROM minhatabela
ORDER BY HORA DESC

Link para o comentário
Compartilhar em outros sites

  • 0
Olá amigos, sou novo no fórum e preciso tirar uma dúvida.

tenho armazenado em uma tabela data e hora de todos os acessos ao site neste formato (2011-05-27 12:30:07). Preciso fazer um select retornando as horas de maior movimento.

Agradeço a quem puder me dar esta dica.

Att

SELECT DISTINCT TIME(datatipotimestamp) AS HORA FROM minhatabela
ORDER BY HORA DESC
Caro Denis, agradeço a resposta mas acho que me espressei mal e talvez tenha criado a tabela de forma errada pois ela é data_time, mas precisaria que me retornase algo como: 13hs 54 acessos, tipo me retornar quantos acessos dentro de uma hora. fiz um codigo aqui que tenho até vergonha de mostrar é em php mas ai se entende bem o que preciso. assim ele me retorna 24 resultados com o numero de acessos em cada hora.
<?
require_once('../Connections/conn.php');

mysql_select_db($database_conn, $conn);
$query_acessos = "SELECT * FROM acessos";
$acessos = mysql_query($query_acessos, $conn) or die(mysql_error());
$row_acessos = mysql_fetch_assoc($acessos);
$totalRows_acessos = mysql_num_rows($acessos);

$a=0;$b=0;$c=0;$d=0;$e=0;$f=0;$g=0;$h=0;$i=0;$j=0;$l=0;$m=0;$n=0;$o=0;$p=0;$q=0;$r=0;$s=0;$t=0;$u=0;$v=0;$x=0;$y=0;$z=0;

do {
    list($data,$hora)=explode(" ",$row_acessos['data_hora']);
    list($hora)=explode(":",$hora);
    
switch($hora) {
    case"00": $a++; break;
    case"01": $b++; break;
    case"02": $c++; break;
    case"03": $d++; break;
    case"04": $e++; break;
    case"05": $f++; break;
    case"06": $g++; break;
    case"07": $h++; break;
    case"08": $i++; break;
    case"09": $j++; break;
    case"10": $l++; break;
    case"11": $m++; break;
    case"12": $n++; break;
    case"13": $o++; break;
    case"14": $p++; break;
    case"15": $q++; break;
    case"16": $r++; break;
    case"17": $s++; break;
    case"18": $t++; break;
    case"19": $u++; break;
    case"20": $v++; break;
    case"21": $x++; break;
    case"22": $y++; break;
    case"23": $z++; break;
}
} while ($row_acessos = mysql_fetch_assoc($acessos));

echo "00hs" . " - " . $a . "<br />";
echo "01hs" . " - " . $b . "<br />";
echo "02hs" . " - " . $c . "<br />";
echo "03hs" . " - " . $d . "<br />";
echo "04hs" . " - " . $e . "<br />";
echo "05hs" . " - " . $f . "<br />";
echo "06hs" . " - " . $g . "<br />";
echo "07hs" . " - " . $h . "<br />";
echo "08hs" . " - " . $i . "<br />";
echo "09hs" . " - " . $j . "<br />";
echo "10hs" . " - " . $l . "<br />";
echo "11hs" . " - " . $m . "<br />";
echo "12hs" . " - " . $n . "<br />";
echo "13hs" . " - " . $o . "<br />";
echo "14hs" . " - " . $p . "<br />";
echo "15hs" . " - " . $q . "<br />";
echo "16hs" . " - " . $r . "<br />";
echo "17hs" . " - " . $s . "<br />";
echo "18hs" . " - " . $t . "<br />";
echo "19hs" . " - " . $u . "<br />";
echo "20hs" . " - " . $v . "<br />";
echo "21hs" . " - " . $x . "<br />";
echo "22hs" . " - " . $y . "<br />";
echo "23hs" . " - " . $z . "<br />";
?>

Link para o comentário
Compartilhar em outros sites

  • 0
Caro Denis, agradeço a resposta mas acho que me espressei mal e talvez tenha criado a tabela de forma errada pois ela é data_time, mas precisaria que me retornase algo como: 13hs 54 acessos, tipo me retornar quantos acessos dentro de uma hora.

fiz um codigo aqui que tenho até vergonha de mostrar é em php mas ai se entende bem o que preciso. assim ele me retorna 24 resultados com o numero de acessos em cada hora.

...

OK Entendi.

Faça assim:

SELECT HOUR(datatipotimestamp) HORA, COUNT(HOUR(datatipotimestamp)) AS QT_HORA FROM minhatabela

Link para o comentário
Compartilhar em outros sites

  • 0
Caro Denis, agradeço a resposta mas acho que me espressei mal e talvez tenha criado a tabela de forma errada pois ela é data_time, mas precisaria que me retornase algo como: 13hs 54 acessos, tipo me retornar quantos acessos dentro de uma hora.

fiz um codigo aqui que tenho até vergonha de mostrar é em php mas ai se entende bem o que preciso. assim ele me retorna 24 resultados com o numero de acessos em cada hora.

...

OK Entendi.

Faça assim:

SELECT HOUR(datatipotimestamp) HORA, COUNT(HOUR(datatipotimestamp)) AS QT_HORA FROM minhatabela
Deu este erro: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause O select ficou assim:
SELECT HOUR(data_hora) HORA, COUNT(HOUR(data_hora)) AS QT_HORA FROM acessos

Tentei criar outra tabela com o campo timestamp achei que talvez pudese ser isso, mas não deu tb.

Link para o comentário
Compartilhar em outros sites

  • 0
...

Deu este erro:

Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

O select ficou assim:

SELECT HOUR(data_hora) HORA, COUNT(HOUR(data_hora)) AS QT_HORA FROM acessos
Tentei criar outra tabela com o campo timestamp achei que talvez pudese ser isso, mas não deu tb.
Desculpe, esqueci de adicionar o GROUP BY: Tenta de novo:
SELECT HOUR(datatipotimestamp) HORA, COUNT(HOUR(datatipotimestamp)) AS QT_HORA 
FROM minhatabela
GROUP BY HORA

Link para o comentário
Compartilhar em outros sites

  • 0

Grande Denis, pesquisei sobre o erro e fiz desta forma:

SELECT HOUR(data_hora) HORA, COUNT(*) AS QT_HORA FROM acessos GROUP BY HOUR(data_hora)
Assin funcionou perfeitamente, obrigado pela força. Agora o codigo ficou em duas linhas. Mais uma vez obrigado. Att
... Deu este erro: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause O select ficou assim:
SELECT HOUR(data_hora) HORA, COUNT(HOUR(data_hora)) AS QT_HORA FROM acessos
Tentei criar outra tabela com o campo timestamp achei que talvez pudese ser isso, mas não deu tb.
Desculpe, esqueci de adicionar o GROUP BY: Tenta de novo:
SELECT HOUR(datatipotimestamp) HORA, COUNT(HOUR(datatipotimestamp)) AS QT_HORA 
FROM minhatabela
GROUP BY HORA

heheh respondemos juntos vlw.

Funcionou certinho, não sei colocar resolvido no tópico.

Editado por Ederson dos Santos
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...