Ahm*_*aya 3 sql postgresql select count left-join
我有桌子组,
ID NUMBER
STATUS VARCHAR2(20 BYTE)
Run Code Online (Sandbox Code Playgroud)
我可以计算以下状态的数量.
select g.status, count(*) from groups g group by g.status;
STATUS COUNT(*)
-------------------- ----------
OK 2
NOK 1
Run Code Online (Sandbox Code Playgroud)
我有另一种状态,比如PENDING,REJECTED.但是表中没有项目,但我希望它们显示为零计数如下.
STATUS COUNT(*)
-------------------- ----------
OK 2
NOK 1
PENDING 0
REJECTED 0
Run Code Online (Sandbox Code Playgroud)
什么是SQL语句使它成为可能?
试试这个
SELECT A.status, COUNT(DISTINCT G.ID) statusCnt
FROM (SELECT 'OK' status FROM DUAL
UNION
SELECT 'NOK' status FROM DUAL
UNION
SELECT 'PENDING' status FROM DUAL
UNION
SELECT 'REJECTED' status FROM DUAL
) AS A
LEFT JOIN groups G ON A.status = G.STATUS
GROUP BY A.status;
Run Code Online (Sandbox Code Playgroud)