sql - 如何在sql中没有ddl的情况下将城市分组为一个值
问题描述
我需要按国家/地区对输出进行分组。
- “拉马特甘”、“特拉维夫”、“耶路撒冷”等城市属于中部地区。
- “埃拉特”市属于“南”区
我想在每个区域获得订阅者。但我不知道如何划分这两组并计算那些有代码的组。
注意:不应使用 DDL 命令。
表:城市和订阅者
** select cities.city_name,count(number) as num
FROM [tempdb].[dbo].[cities] as cities
LEFT JOIN [tempdb].[dbo].[subscribers] as subscribers
on cities.city_code=subscribers.city_code
group by cities.city_name**
解决方案
您真的应该将该区域添加到cities
表中。如果没有,您可以在查询中引入它。一种方法是创建包含城市和地区的派生表:
select v.region, count(s.number) as num
from [tempdb].[dbo].[cities] c join
(values (1, 'Central'),
(2, 'South'), -- "Eilat" appears to be 2
. . .
) v(city_code, region)
on v.city_code = c.city_code left join
[tempdb].[dbo].[subscribers] s
on c.city_code = s.city_code
group by v.region
推荐阅读
- python - 从pandas df返回第一个和最后一个项目的有效方法
- matrix - Power BI:矩阵获取两列的差异
- matplotlib - 试图理解 scipy.stats.norm
- ios - 手机首次解锁时如何使 UIDeviceOrientation 自动变为纵向?
- apache-spark - Spark 上的 Hive:资源不足
- python - 如何复制一行 QtableWidget 并插入到它下面的行?
- reactjs - 如何自动将选择范围扩展到 Draft.js 中的整个链接文本?
- android - Kotlin:如何执行异步函数并等待它完成?
- mechanicalturk - 确定完成 HIT 的工作人员的语言环境
- c# - 如何在 Unity 3D 中暂时使精灵消失?