MYSQL按小时分组,具有2列计数

时间:2018-10-30 16:28:03

标签: mysql grouping

我正在为我的服务台创建一个仪表板,并希望创建一个已记录的记录与已解决的事件图,但是无法确定哪一个查询将一步一步给我所需的结果(最终将由php执行)

我想从中得到结果的数据是:
Logdatex-记录票证的UNIX时间戳记
Resolve_datex-记录票证的Unix时间戳记

我的数据看起来像(我每天要处理200多个记录的一个小样本):

|| *logdatex* || *resolve_datex* ||
|| 1463734913 ||    1531738806   ||
|| 1476695541 ||    1532698820   ||
|| 1528727293 ||    1528729503   ||
|| 1501488766 ||    1529314520   ||
|| 1528730682 ||    1528730809   ||
|| 1507122741 ||    1531739076   ||
|| 1528725481 ||    1528793556   ||
|| 1507300496 ||    1529063535   ||
|| 1511867374 ||    1529314392   ||
|| 1528724000 ||    1528810247   ||

我要查找的输出是:

+------+--------+----------+
| Hour | Logged | Resolved |
+------+--------+----------+
|  8   |   19   |   0      |
|  9   |   25   |   15     |
|  10  |   23   |   21     |
|  11  |   20   |   29     |
|  12  |   18   |   33     |
+------+--------+----------+

我可以使用2个查询轻松获得信息,但只想使用一个。我可以用来获取数据的2个查询是:
1。

SELECT HOUR (from_unixtime(logdatex)), COUNT(HOUR (from_unixtime(logdatex)))
FROM mytable
WHERE from_unixtime(logdatex) > NOW() - INTERVAL 11 HOUR
GROUP BY HOUR (from_unixtime(logdatex))

2。

SELECT HOUR (from_unixtime(resolve_datex)), COUNT(HOUR (from_unixtime(resolve_datex)))
FROM mytable
WHERE from_unixtime(resolve_datex) > NOW() - INTERVAL 11 HOUR
GROUP BY HOUR (from_unixtime(resolve_datex))

2 个答案:

答案 0 :(得分:0)

尝试以下查询。希望对您有帮助。

                            SELECT FIELD, SUM(cnt)
                            FROM (
                              SELECT HOUR (FROM_UNIXTIME(logdatex)) AS FIELD, COUNT(HOUR (FROM_UNIXTIME(logdatex))) AS cnt
                              FROM mytable
                              GROUP BY HOUR (FROM_UNIXTIME(logdatex))
                              UNION ALL
                              SELECT HOUR (FROM_UNIXTIME(resolve_datex)) AS FIELD, COUNT(HOUR (FROM_UNIXTIME(resolve_datex))) AS cnt
                              FROM mytable
                              GROUP BY HOUR (FROM_UNIXTIME(resolve_datex))
                            ) AS combined_table
                            GROUP BY FIELD

答案 1 :(得分:0)

所以...经过四处查看和在我的PC上发誓之后,我发现使用MYSQL 4.0.16是不可能的,因为它不支持嵌套的select语句。您可以使用case语句获得大部分方式,但不能将小时列分组在一起。看来我将学习更多PHP,以从2个查询中获取结果并显示在单个表中。