获取每个城市的客户数量和每个国家/地区的客户总数 One table

Get amount of customer per city and the total of customer per country One table

我需要将这两个 SQL 脚本合二为一:从 AdventureWorks 数据库中获取每个城市的客户数量和每个国家/地区的客户总数

我几乎完成了,问题是我需要制作一个单曲 TABLE,多个 COUNT 的有问题。

 USE AdventureWorks2014
SELECT person.Address.City, Count (*) AS Total
FROM person.Address
INNER JOIN person.StateProvince
    ON person.Address.StateProvinceID = person.StateProvince.StateProvinceID
GROUP BY person.Address.City 
ORDER BY Total DESC

First scrip Returns

USE AdventureWorks2014

SELECT person.StateProvince.CountryRegionCode, Count (*) AS Total
FROM person.Address
INNER JOIN person.StateProvince
    ON person.Address.StateProvinceID = person.StateProvince.StateProvinceID
GROUP BY person.StateProvince.CountryRegionCode 
ORDER BY Total DESC

Second script returns:

最简单的方法是UNION ALL。但是,您可以使用 GROUPING SETS:

做基本相同的事情
SELECT COALESCE(a.City, sp.CountryRegionCode) as City_or_Region,
       Count(*) AS Total
FROM person.Address a INNER JOIN
     person.StateProvince sp
     ON a.StateProvinceID = sp.StateProvinceID
GROUP BY GROUPING SETS ((a.City), (sp.CountryRegionCode))
ORDER BY Total DESC;

请注意,这对数据做了一些假设:

  • City 永远不会是 NULL.
  • CityCountryRegionCode 永远不会有相同的值(如果需要,您可以将它们分成不同的列)。