[英]Sum of items not fulfilling the having by clause SQL
我有一张生产表,上面有列code
, name
, country
, production
我需要列出超过1000个国家的产量,还要列出所有其他国家的产量总和并标记其他国家。 所以输出看起来像这样
Country production
------- ----------
Japan 1380
England 1400
Other 2700
是否可以使一个选择中不进行联合?
使用子查询:
SELECT CASE WHEN production >= 1000 THEN country ELSE 'Other' END country
, SUM(production) AS production
FROM(
SELECT country,
SUM(production) AS production
FROM production
GROUP BY country
) AS a
GROUP BY CASE WHEN production >= 1000 THEN country ELSE 'Other' END
由于您要返回所有数据,但分组方式不同,因此您无需将此任务视为“筛选”练习,而只需将其视为分组/重新标注练习。 要重新标记生产量大于1000的所有内容,可以使用case语句。 剩下要做的就是分组。 无需任何子查询。
SELECT country = CASE WHEN production >= 1000
THEN country
ELSE 'Other'
END
, production = SUM(production)
FROM production
GROUP BY CASE WHEN production >= 1000
THEN country
ELSE 'Other'
END
如果该表可以包含每个国家/地区的多个记录,则@niktrs的答案是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.