Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL查询以获取24小时图表上的结果_Php_Mysql - Fatal编程技术网

Php SQL查询以获取24小时图表上的结果

Php SQL查询以获取24小时图表上的结果,php,mysql,Php,Mysql,我使用以下结构将网站上的点击存储在Mysql数据库中: select * from contenido_clicks; +-------------+-------------+------------+ | idContenido | fecha_click | servicetag | +-------------+-------------+------------+ | 5 | 1392829606 | HJCS302 | | 8 | 1

我使用以下结构将网站上的点击存储在Mysql数据库中:

select * from contenido_clicks;
+-------------+-------------+------------+
| idContenido | fecha_click | servicetag |
+-------------+-------------+------------+
|           5 |  1392829606 | HJCS302    |
|           8 |  1392832379 | HJCS302    |
|           5 |  1392832433 | HJCS302    |
|           5 |  1392832435 | HJCS302    |
|           5 |  1392832437 | HJCS302    |
And so on...
在这里,我有很多来自不同日期和时间的条目,我需要获取所有条目,并将其放置在24小时图表上,以显示人们一天中点击次数最多的时间。我可以通过以下方式获得每小时的点击次数:

SELECT cc.fecha_click div 3600 as Horas, COUNT(cc.idContenido) as Clicks 
FROM contenido_clicks cc 
GROUP BY fecha_click div 3600 ASC
但我不知道如何将它们合并到24小时工作表中


有什么想法吗?

创建一个包含24行的Horas域表,并用它左键连接contenido_clicks表

create table Horas
(
  Hora integer not null
)

Insert into Horas (Hora) vlaues (0)
Insert into Horas (Hora) vlaues (1)
.
.
.
Insert into Horas (Hora) vlaues (23)

select *
from Horas h
left join (
   SELECT cc.fecha_click div 3600 as Horas, COUNT(cc.idContenido) as Clicks 
   FROM contenido_clicks cc 
   GROUP BY fecha_click div 3600
) as hh on hh.Hora = h.Hora
order by h.Hora

我想你想做这样的事情

  SELECT * 
   FROM contenido_clicks
  WHERE DATE_ADD(NOW(), INTERVAL 24 HOUR) > fecha_click

我认为这将解决您的问题

感谢jean提供的解决方案,我写下以下查询:

SELECT h.hora, COUNT(cc.idContenido) as Clicks 
FROM horas h 
LEFT JOIN contenido_clicks cc ON h.hora = DATE_FORMAT(FROM_UNIXTIME(cc.fecha_click), '%H') 
GROUP BY h.hora;
并得到如下结果:

+------+--------+
| hora | Clicks |
+------+--------+
|    0 |      0 |
|    1 |      0 |
|    2 |      0 |
|    3 |      0 |
|    4 |      0 |
|    5 |      0 |
|    6 |      0 |
|    7 |      0 |
|    8 |      0 |
|    9 |      5 |
|   10 |      3 |
|   11 |      7 |
|   12 |      4 |
|   13 |      3 |
|   14 |      0 |
|   15 |      5 |
|   16 |      1 |
|   17 |      5 |
|   18 |      8 |
|   19 |      0 |
|   20 |      0 |
|   21 |      1 |
|   22 |      0 |
|   23 |      0 |
+------+--------+
24 rows in set (0.00 sec)

哪些是正确的结果。

是否要按日期/小时进行分组?小时字段在数据库表中的位置?不准确。如果有几个设备在11:00和12:00之间的不同日期进行点击,我需要该小时的总点击量。@SohailYasmin:我只有fecha_clickIs
fetcha_click的时间戳
unix时间戳?你应该改用
DateTime
。我发现我需要一个Hora字段来解决这个问题。我想时间戳应该是多少。