SQL查询子集中的最大值

时间:2020-09-29 15:29:01

标签: sql postgresql

我有一个表bls_jobs,其中包含以下列:citystateocc_titlejobs_1000loc_quotient

我正在尝试为每个城市检索最高的loc_quotient(每个城市有几个occ_titles,每个occ_title都有一个loc_quotient

当前,我可以使用以下查询:

SELECT *
FROM bls_jobs
WHERE city = 'Hattiesburg'
ORDER BY loc_quotient DESC
LIMIT 1

确实返回了我要查找的内容(城市中最高的loc_quotient,并返回了每一列),但是我一直在努力寻找如何使它对所有城市都如此的方法我返回的只是每个城市最高的loc_quotient的输出以及其他各列的数据...

1 个答案:

答案 0 :(得分:1)

使用distinct on

SELECT DISTINCT ON (j.city) j.*
FROM bls_jobs j
ORDER BY j.city, j.loc_quotient DESC;

DISTINCT ON是便捷的Postgres扩展。它返回每个组中的第一行,其中组是DISTINCT ON ()子句中的键(并且ORDER BY与它们一致)。