我正在为我的服务台创建一个仪表板,并希望创建一个已记录的记录与已解决的事件图,但是无法确定哪一个查询将一步一步给我所需的结果(最终将由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))
答案 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个查询中获取结果并显示在单个表中。