我是 Sql 服务器的新手,我的 MySql 背景只是一般,没有什么特别的。
我有一个包含 5 列的表格:
Neighbrhood
City
State
zip_code
zip_percent
查询的目标: 提供城市内的社区列表(唯一)以及与最高 zip_percent 对应的邮政编码。因此返回 2 列:
Neighborhood
zip_code
由于具有最高的覆盖百分比或“zip_percent”,邮政编码是该社区的“最具代表性”
问题:由于一个社区可能会重叠多个邮政编码,因此我在区分它们时遇到了问题。 unique 子句阻止我按未选择的列进行排序。
不知何故,我认为我需要使用这个子查询并在 zip_percent 列上使用 MAX 命令将其连接回原始表。我只是无法将所有的部分拼凑起来。我真的很感激任何帮助。
您可以在此处查看“Arbor Heights”和“Rainer Beach”等社区的问题示例
最佳答案
尝试使用 ROW_NUMBER:
SELECT Neighborhood, zip_code
FROM (
SELECT
Neighborhood, zip_code,
ROW_NUMBER() OVER (PARTITION BY Neighborhood
ORDER BY zippercent DESC) AS rn
FROM neighbourhoods_zip
) AS T1
WHERE rn = 1
Neighborhood zip_code Adams 98107 Alki 98116 ArborHeights 98146 Atlantic 98144 Belltown 98121 BitterLake 98133 Briarcliff 98199 etc...
关于sql - 在单列上不同,但根据未选择的条件从同一个表返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3215989/