SQL Count非现有项目

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语句使它成为可能?

Sah*_*hah 5

试试这个

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)