繁体   English   中英

不符合Have by子句SQL的项目总数

[英]Sum of items not fulfilling the having by clause SQL

我有一张生产表,上面有列codenamecountryproduction

我需要列出超过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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM