Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Mysql 我可以得到一个小时计数,包括没有数据的小时数吗?_Mysql - Fatal编程技术网

Mysql 我可以得到一个小时计数,包括没有数据的小时数吗?

Mysql 我可以得到一个小时计数,包括没有数据的小时数吗?,mysql,Mysql,我需要一种生成报告的方法,该报告显示每小时的事务数(或点击数)。到目前为止,我已经得到了如下表,但它跳过了没有数据的小时数 即使计数为0,是否有办法显示小时数 SELECT HOUR(`time`), Count(*) FROM `taps` WHERE DATE(`time`) = '2016-01-17' AND `readerid` IN (SELECT `readerid` FROM `readers` W

我需要一种生成报告的方法,该报告显示每小时的事务数(或点击数)。到目前为止,我已经得到了如下表,但它跳过了没有数据的小时数

即使计数为0,是否有办法显示小时数

SELECT HOUR(`time`), Count(*)
FROM `taps`
WHERE DATE(`time`) = '2016-01-17' AND `readerid` IN 
            (SELECT `readerid` 
             FROM `readers` 
             WHERE `type` = 'A')
GROUP BY HOUR(`time`)
ORDER BY HOUR(`time`)
这将生成下表:
是的,你可以

通过对同一个表使用左外部联接或右外部联接并对其使用别名,您可以选择空值,甚至根据查询中声明的条件为它们指定一个值

为了给出一个语法示例,请显示您的预期结果。 并提供您正在使用的表,我尝试复制,但没有找到在陷阱和读卡器之间建立关系的方法。

假设您有所有小时的一些数据,那么您可以将查询表述为带有条件聚合的左连接:

SELECT HOUR(t.`time`), Count(r.readerid)
FROM tabs t left join
     readers r
     on r.readerid = t.readerid and r.type = 'A'
WHERE DATE(t.time) = '2016-01-17'
GROUP BY HOUR(t.time)
ORDER BY HOUR(t.time);
如果这不是真的,那么不知何故,你需要一个小时列表。一种方法是子查询:

SELECT h.hr, Count(r.readerid)
FROM (select 0 as hr union all select 1 union all . . .
      select 23
     ) h left join
     tabs t
     on h.hr = hour(t.time) and
        DATE(t.time) = '2016-01-17' left join
     readers r
     on r.readerid = t.readerid and r.type = 'A'
GROUP BY h.hr
ORDER BY h.hr;

还有其他方法可以生成小时列表。子查询是最通用的。

谢谢@GordonLinoff!子查询是我去那里的路!一件事是,由于顺序的原因,它们出现的顺序是不可靠的。e、 g 0,1,10,11,12。。。。。2, 20, 21, 22@CallamThom . . . 不知何故,您将它们声明为字符串而不是整数。作为整数,它们将正确排序。