如何包括计数为0的行

时间:2019-04-15 23:58:15

标签: sql

我试图统计所有演员被标记为“未归类”的电影。结果应包括所有没有扮演未经授权角色但演员总数为0的演员。

我尝试过


SELECT COUNT(MOVIEROLE.MR_ROLE) AS "COUNT", ACTOR.A_NAME

FROM MOVIEROLE LEFT OUTER JOIN ACTOR

ON MOVIEROLE.A_ID = ACTOR.A_ID

WHERE MOVIEROLE.MR_ROLE LIKE '%UNCREDITED%'

GROUP BY ACTOR.A_NAME

这将返回


COUNT | A_NAME

  3   | Chris Evans

  1   | Chris Hemsworth

  2   | Mark Ruffalo

  1   | Samuel L Jackson

  1   | Scarlett Johansson

我需要可以返回上面内容的东西,但上面也要加上


COUNT | A_NAME 

  0   | Robert Downey JR

  0   | Jeremy Renner

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

如果要保留所有角色,则该列表应该是left join中的第一张表:

select a.a_name, count(mr.a_id)
from actor a left join
     movierole mr
     on mr.a_id = a.a_id and mr.role like '%UNCREDITED%'
group by a.a_name;

答案 1 :(得分:0)

您可以通过将LEFT JOIN更改为RIGHT JOIN来获得所需的结果,这将保留JOIN表达式中第二个(“右”)表中的所有行。请注意,您需要将WHERE表达式移至JOIN条件:

SELECT COUNT(MOVIEROLE.MR_ROLE) AS "COUNT", ACTOR.A_NAME
FROM MOVIEROLE RIGHT OUTER JOIN ACTOR
ON MOVIEROLE.A_ID = ACTOR.A_ID AND MOVIEROLE.MR_ROLE LIKE '%UNCREDITED%'
GROUP BY ACTOR.A_NAME