按状态和日期计算所有行

Count all rows by status and day

我想用这个 table 在 Postgre 中存储票证SQL。

CREATE TABLE TICKET(
 ID INTEGER NOT NULL,
 TITLE TEXT,
 STATUS INTEGER,
 LAST_UPDATED DATE,
 CREATED DATE
)
;

我使用列 'status' 来设置不同的状态(1、2、3、4)。我如何通过一个 SQL 查询按状态和日期计算所有工单?

我想得到最终结果,例如简单的数字数组:

32 31 23 42 9.11.215
31 21 13 22 10.11.215
3 3 2 43 11.11.215

您可以使用条件聚合来完成此操作,它将单独的行合并为 1 个聚合行:

SELECT t.created,
       COUNT(CASE WHEN t.status = '1' THEN 1 END) as cnt_status1,
       COUNT(CASE WHEN t.status = '2' THEN 1 END) as cnt_status2,
       COUNT(CASE WHEN t.status = '3' THEN 1 END) as cnt_status3,
       COUNT(CASE WHEN t.status = '4' THEN 1 END) as cnt_status4
FROM ticket t
GROUP BY t.created