col*_*_px 2 mysql sql time timestamp reporting-services
我担心这可能是一个非常令人尴尬的简单问题 - 但我的思绪完全停留在这个时刻.
我有一张表格,可以存储不同人员开展的活动数量,以及发生的时间.
我想创建一个报告,接受该人的姓名作为参数,并显示从当前时间戳(now())开始的每个过去24小时内该人每小时的活动数.
马上,
SELECT hour(TimeStamp), activities FROM tbl1
WHERE timestamp >= DATE_SUB(NOW(), INTERVAL 24 HOUR) AND Name = ?
GROUP BY hour(timestamp)
Run Code Online (Sandbox Code Playgroud)
只有在任何活动出现的那几个小时才回到我身边.但是,如果没有活动,我想要一个完整的24小时故障,零点.
即我得到了
Hour | No. of Activities
1 | 34
4 | 22
9 | 86
Run Code Online (Sandbox Code Playgroud)
但我想要
Hour | No. of Activities
1 | 34
2 | 0
3 | 0
4 | 22
5 | 0
... etc.
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
(示例中的小时数无关紧要)
你可以创建一个hourly表,并做一个LEFT JOIN
create table hourly
(
/* hour is not a reserved keyword */
hour smallint(2) not null default 0
);
insert into hourly values (0),(1).... until 24
SELECT
hourly.hour,
COALESCE(COUNT(activities),0) AS "No of Activities"
FROM hourly
LEFT JOIN tbl1 ON hourly.hour=hour(tbl1.TimeStamp)
WHERE
tbl1.timestamp>=DATE_SUB(NOW(), INTERVAL 24 HOUR) AND
tbl1.Name=?
GROUP BY hourly.hour
ORDER BY hourly.hour;
Run Code Online (Sandbox Code Playgroud)