按状态计算所有行
Count all rows by status
我想用这个 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 查询按状态统计所有工单?
我希望看到最终结果,例如简单的数字数组:
34, 44, 64, 23
Select status, count(*)
from Ticket
group by status
如果你没有任何门票也必须显示状态。然后我会按照以下步骤操作。
将有一个 table 来存储状态 details.With 同样我们无法知道 Ticket table
中缺少哪个状态
假设 table 状态如下
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
select status, count(*) from ticket group by status;
select status, count(*) from ticket group by status
如果您想要一行中的值,例如:
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。
我想用这个 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 查询按状态统计所有工单?
我希望看到最终结果,例如简单的数字数组:
34, 44, 64, 23
Select status, count(*)
from Ticket
group by status
如果你没有任何门票也必须显示状态。然后我会按照以下步骤操作。 将有一个 table 来存储状态 details.With 同样我们无法知道 Ticket table
中缺少哪个状态假设 table 状态如下
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
select status, count(*) from ticket group by status;
select status, count(*) from ticket group by status
如果您想要一行中的值,例如:
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。