我有一个名为 STATUS_HISTORY
id—记录的id(id和rev的组合是唯一的)
rev-修订id,如果任何记录发生更改,将使用递增的修订id创建一个新条目
状态-它可以包含三个值
打开
关闭
进行中
updated \u by \u id-更新记录的用户的id
更新的时间戳-此记录是何时更新的。
任务id-状态正在更改的任务
现在一天中一个记录可以移动到不同的状态。
我正在寻找一个能给出如下回答的查询:
╔═════════════════╤══════╤════════════╤═══════╗
║ Hour_of_the_day │ OPEN │ INPROGRESS │ CLOSE ║
╠═════════════════╪══════╪════════════╪═══════╣
║ 1 │ 10 │ 0 │ 0 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 2 │ 10 │ 0 │ 0 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 3 │ 10 │ 0 │ 0 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 4 │ 9 │ 1 │ 0 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 5 │ 9 │ 1 │ 0 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 6 │ 8 │ 2 │ 0 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 7 │ 8 │ 2 │ 0 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 8 │ 8 │ 1 │ 1 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 9 │ 8 │ 0 │ 2 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 10 │ 6 │ 2 │ 2 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 11 │ 6 │ 1 │ 3 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 12 │ 5 │ 2 │ 3 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 13 │ 4 │ 3 │ 3 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 14 │ 4 │ 3 │ 3 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 15 │ 2 │ 3 │ 5 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 16 │ 1 │ 2 │ 7 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 17 │ 0 │ 1 │ 9 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 18 │ 0 │ 0 │ 10 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 19 │ 0 │ 0 │ 10 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 20 │ 0 │ 0 │ 10 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 21 │ 0 │ 0 │ 10 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 22 │ 0 │ 0 │ 10 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 23 │ 0 │ 0 │ 10 ║
╟─────────────────┼──────┼────────────┼───────╢
║ 24 │ 0 │ 0 │ 10 ║
╚═════════════════╧══════╧════════════╧═══════╝
注意:假设一个任务被标记为打开,并且在过去的5个小时内状态没有变化,则必须对所有5个小时进行计数。其他状态如close和inprogress也一样,因为不是所有的条目每小时都会改变。
基本上每小时有多少票是开放的,关闭的或进行中。
我不知道如何为这个逻辑编写查询。但下面是我的尝试,它给出了完全不同的输出。
SELECT TO_CHAR(t.UPDATED_TIMESTAMP , 'HH24') AS hour,
COUNT(*) AS numPerHour, t.STATUS
FROM STATUS_HISTORY t
WHERE t.UPDATED_TIMESTAMP >= to_date('29-OCT-18','DD-MON-YY')
AND t.UPDATED_TIMESTAMP < to_date('30-OCT-18','DD-MON-YY')
GROUP BY TO_CHAR(t.UPDATED_TIMESTAMP , 'HH24'), t.STATUS;
╔═════════════════╤════════════╤════════════╗
║ Hour_of_the_day │ NumPerHour │ INPROGRESS ║
╠═════════════════╪════════════╪════════════╣
║ 06 │ 2 │ OPEN ║
╟─────────────────┼────────────┼────────────╢
║ 09 │ 5 │ OPEN ║
╟─────────────────┼────────────┼────────────╢
║ 09 │ 2 │ OPEN ║
╟─────────────────┼────────────┼────────────╢
║ 09 │ 3 │ CLOSE ║
╟─────────────────┼────────────┼────────────╢
║ 07 │ 1 │ INPROGRESS ║
╟─────────────────┼────────────┼────────────╢
║ 08 │ 8 │ OPEN ║
╟─────────────────┼────────────┼────────────╢
║ 11 │ 1 │ CLOSE ║
╟─────────────────┼────────────┼────────────╢
║ 08 │ 1 │ INPROGRESS ║
╟─────────────────┼────────────┼────────────╢
║ 07 │ 3 │ OPEN ║
╟─────────────────┼────────────┼────────────╢
║ 11 │ 2 │ CLOSE ║
╟─────────────────┼────────────┼────────────╢
║ 12 │ 1 │ INPROGRESS ║
╚═════════════════╧════════════╧════════════╝
我想了解一下是否有其他方法可以通过java程序处理它,或者查询可以提供这个结果。
2条答案
按热度按时间14ifxucb1#
你可以用一个箱子:
xnifntxz2#
使用条件聚合。