我希望SUM()
同时使用WHERE
但是当找不到某个ID
的记录时,我希望它返回NULL
而不是仅仅SELECT
ID,
SUM(CASE WHEN EVENTS = 3 THEN 1 ELSE 0 END)
FROM Events_ID
WHERE
YEAR = 2012
GROUP BY ID
不归还任何东西。
初始代码:
ID
如果2012年没有事件,则不会返回SELECT
ID,
(SELECT
SUM(CASE WHEN EVENTS = 3 THEN 1 ELSE 0 END)
FROM EVENTS_ID r WHERE r.ID = t.ID AND r.YEAR = 2012)
FROM (SELECT * FROM Events_ID GROUP BY ID) as t;
。
然后我将其更改为以下似乎可以正常工作,但速度大约慢了100倍!
{{1}}
有没有让第二个查询的输出更接近第一个查询的速度?
答案 0 :(得分:1)
这是你想要的吗?
SELECT ID,
SUM(CASE WHEN EVENTS = 3 AND YEAR = 2012 THEN 1 END)
FROM Events_ID
GROUP BY ID;
如果没有任何事件符合这两个条件,这将返回所有ID,NULL
作为第二个值。