我想使用此表在PostgreSQL中存储票证。
CREATE TABLE TICKET(
ID INTEGER NOT NULL,
TITLE TEXT,
STATUS INTEGER,
LAST_UPDATED DATE,
CREATED DATE
)
;
我使用列'status'来设置不同状态(1,2,3,4)。如何通过一个SQL查询按状态统计所有票证?
我希望看到最终结果,比如简单的数字数组:
34, 44, 64, 23
答案 0 :(得分:3)
Select status, count(*)
from Ticket
group by status
如果您还必须显示没有任何门票的状态。然后我会按照以下步骤操作。 将有一个表来存储状态详细信息。如果不同,我们无法知道故障单表中缺少哪个状态
假设表格状态如下
CREATE TABLE _STATUS(
STATUS INTEGER,
STATUS_NAME TEXT
)
;
CREATE TABLE TICKET(
ID INTEGER NOT NULL,
TITLE TEXT,
STATUS INTEGER,
LAST_UPDATED DATE,
CREATED DATE
)
;
查询将是
select s.status,COUNT(t.*)
from _status t left join ticket t
on s.status = t.status
group by s.status
答案 1 :(得分:2)
select status, count(*) from ticket group by status
答案 2 :(得分:1)
select status, count(*) from ticket group by status;
答案 3 :(得分:0)
如果你想要一行的值,比如:
SELECT
COUNT(CASE WHEN status=1 THEN 1 ELSE NULL END) as '1',
COUNT(CASE WHEN status=2 THEN 1 ELSE NULL END) as '2',
COUNT(CASE WHEN status=3 THEN 1 ELSE NULL END) as '3',
COUNT(CASE WHEN status=4 THEN 1 ELSE NULL END) as '4'
FROM TICKET;
但是,您必须使用任何新的状态代码更新SQL。