如何在SQL/Snowflake中添加分组总数统计列
获取城市分组总数的SQL实现
我已经掌握使用以下SQL语句,获取按城市分区、按区县排序的行号:
SELECT city, district, ROW_NUMBER() OVER (PARTITION BY city ORDER BY district) FROM place
执行后得到结果:
| City | District | row. |
|---|---|---|
| Lon | STR | 1 |
| Lon | BUD | 2 |
| Lon | LBR | 3 |
| Lon | TES | 4 |
| NY | BRO | 1 |
| NY | WIL | 2 |
| Par | Cen | 1 |
但实际需要的是各城市分组的总数——即每个城市下的区县数量,且每行都显示对应城市的总数,期望结果如下:
| City | District | row. |
|---|---|---|
| Lon | STR | 4 |
| Lon | BUD | 4 |
| Lon | LBR | 4 |
| Lon | TES | 4 |
| NY | BRO | 2 |
| NY | WIL | 2 |
| Par | Cen | 1 |
只需将原SQL中的ROW_NUMBER()替换为COUNT(*) OVER (PARTITION BY city),即可实现需求:
SELECT city, district, COUNT(*) OVER (PARTITION BY city) AS `row.` FROM place
内容的提问来源于stack exchange,提问作者Justin Beresford
相关产品推荐
相关产品推荐

