[英]SQL Query to get results on a 24 hour graph
我具有以下結構,可將來自網站的點擊存儲在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)
哪個是正確的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.