sql-server 带计数子查询

vfh0ocws  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(290)

假设我有下面的表“geo
| 国家/地区|省份|城市名称|
| - -|- -|- -|
| 荷兰Name|德伦特|阿森|
| 荷兰Name|德伦特|科沃登|
| 荷兰Name|德伦特|埃门|
| 荷兰Name|弗莱沃兰|比丁惠岑|
| 荷兰Name|弗莱沃兰|比丁惠岑|
| 荷兰Name|弗莱沃兰|比丁惠岑|
| 荷兰Name|弗莱沃兰|比丁惠岑|
| 比利时Name|安特卫普|安特卫普|
| 比利时Name|安特卫普|阿尔采拉尔|
| 比利时Name|安特卫普|动臂|
我想查询以下输出(返回不同的县+省+国家在表中看到的次数)
| 国家/地区|省份|计数|
| - -|- -|- -|
| 荷兰Name|德伦特|2个|
| 荷兰Name|弗莱沃兰|2个|
| 比利时Name|安特卫普|一个|
这样我就能分两步做好
1.查询国家和省份

select country, province from geo
group by country, province

但我不明白如何才能从步骤1转到所需结果
有可能一步做好吗?

7cwmlq89

7cwmlq891#

一个通用的选项是使用DISTINCT运算符对国家/地区的相同省份进行聚合,然后对国家/地区应用具有部分分区的COUNT窗口函数。

WITH cte AS (
    SELECT DISTINCT Country, Province FROM tab
)
SELECT *, COUNT(Province) OVER(PARTITION BY Country) AS cnt
FROM cte

这是MySQL中的demo,尽管它应该在大多数DBMS上工作。

wj8zmpe1

wj8zmpe12#

您可能更喜欢简单(按照PM 77-1)

select country, province, count(*) As Kt
from geo
group by country, province

相关问题