繁体   English   中英

将HAVING与GROUPING SETS一起使用

[英]Using HAVING with GROUPING SETS

我的sql字符串如下

SELECT Country, City, COUNT(*) AS [Count]
FROM   CountriesAndCities
GROUP  BY GROUPING SETS ( ( Country, City ), ( Country) )     
ORDER  BY Country, City 

我得到如下结果

Country     City        CountryCount
----------  ----------  ------------
France      NULL        4 
France      Paris       4           
Spain       NULL        6 
Spain       Barcelona   3           
Spain       Madrid      3   

如果某个国家/地区只有一个城市记录,那么使用HAVING可以获得以下结果吗?

Country     City        CountryCount
----------  ----------  ------------
France      Paris       4           
Spain       NULL        6 
Spain       Barcelona   3           
Spain       Madrid      3  
SELECT Country, City, COUNT(*) AS [Count]
FROM   CountriesAndCities
GROUP  BY GROUPING SETS ( ( Country, City ), ( Country) )
HAVING GROUPING(City) = 0
    OR COUNT(DISTINCT City) > 1
ORDER  BY Country, City
  • 如果City是当前分组依据的字段之一,则GROUPING(City) = 0
  • 相反,当GROUPING(City) = 1 City被报告为NULL

这意味着我们总是包括提到City的行(不是NULL )。

对于其他行,其中GROUPING(City) = 1 aka City IS NULL ,则仅在将多个City聚合到结果中的情况下才包括该行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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