sql - 如何为每个国家/地区选择最大的邮政编码
问题描述
在每个国家/地区,哪个城市的邮政编码最高?仅选择国家名称和城市名称
这是一个图形模式,可能会对您有所帮助:
这是我到目前为止所做的:
SELECT CountryName, CityName
from City ci
join County co on co.CountryID = ci.CountryID
group by CountryName, CityName, ci.ZipCode
having ZipCode = MAX(ZipCode)
如果有人能解决我这个问题,我将不胜感激。
解决方案
一种选择使用横向连接:
select co.countryname, ci.cityname, ci.zipcode
from country co
cross apply (
select top (1) with ties ci.*
from city ci
where ci.countryid = co.countryid
order by ci.zipcode desc
) ci
您还可以使用row_number()
:
select co.countryname, ci.cityname, ci.zipcode
from country co
inner join (
select ci.*, rank() over(partition by countryid order by zipcode desc) rn
from city ci
) ci on ci.countryid = co.countryid
如果您正在运行 MS Access,则可以使用相关子查询:
select co.countryname, ci.cityname, ci.zipcode
from country co as co
inner join city as ci on ci.countryid = co.countryid
where ci.zipcode = (
select max(c1.zipcode)
from city as ci1
where ci1.countryid = ci.country
)
推荐阅读
- excel - 引用作为单元格值的范围
- java - Wildfly 中缺少用于 EAR 部署的模块
- angular - 选项卡之间的firebase身份验证持久性问题
- audio - 如何将 Praat 脚本应用于音频文件?
- windows - 在计划任务中运行 msys2 bash 作业时如何继承 WIndows 系统环境变量
- java - 当我试图在我的设备上测试游戏时,“不幸的是,应用名称已停止
- java - 使用android studio的fire base中的身份验证问题
- spring - 本机 SQL 选择强制在事务方法中刷新
- python-3.x - 速记 If Else 语句的结构分解
- javascript - 什么时候应该使用 JSDocs?