获取每个城市的客户数量和每个国家/地区的客户总数 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
.
City
和 CountryRegionCode
永远不会有相同的值(如果需要,您可以将它们分成不同的列)。
我需要将这两个 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
.City
和CountryRegionCode
永远不会有相同的值(如果需要,您可以将它们分成不同的列)。