ticket_number | datetime | status
---------------+----------------------------+---------
1 | 2020-08-03 03:52:58.048196 | replied
1 | 2020-08-02 19:55:49.121455 | new
2 | 2020-07-30 03:52:58.048196 | pending
2 | 2020-07-28 20:15:41.213842 | replied
2 | 2020-07-26 03:52:58.482911 | new
3 | 2020-06-17 19:55:49.394628 | closed
3 | 2020-06-14 03:52:58.513141 | replied
3 | 2020-06-11 19:55:49.242859 | new
4 | 2020-05-14 07:13:50.527481 | new
5 | 2020-05-13 11:24:38.558921 | new
上表按datetime
. 订购后,我需要分组,ticket_number
以便每张票只出现一次,并选择status
最新的datetime
每张票。然后我需要计算每个status
.
工单 1 的状态为已回复 - reply_count = 1,工
单 2 的状态为待处理 - pending_count = 1,
工单 3 的状态为已关闭 - closed_count = 1,工
单 4 的状态为 new - new_count = 1,
票 5 的状态为 mew - new_count = 2
预期结果:
replied_count | pending_count | closed_count | new_count
---------------+-----------------+----------------+------------
1 | 1 | 1 | 2
利用
小提琴
用于以垂直形式获得所需的统计数据。如果您需要严格的旋转输出,则使用 CROSSTAB() 或类似方法,或使用 4 个 CASE 模拟它。
这应该更快,但是:
db<>在这里摆弄
假设
datetime
被定义NOT NULL
。看:
如果每张票有很多行,其中一种技术会(很多)更快,但是:
ticket
每张相关票单有一排的桌子会有所帮助。