我有下表,名称为t2:
realm | race | gender | total
----------+------------+--------+--------
Buffalo | faerie | F | 5972
Buffalo | faerie | M | 2428
Buffalo | footballer | F | 1954
Buffalo | footballer | M | 2093
Buffalo | raccoon | F | 2118
Buffalo | raccoon | M | 1237
Buffalo | shark | F | 12497
Buffalo | shark | M | 3621
Buffalo | wizard | F | 468
Buffalo | wizard | M | 11079
Camelot | faerie | F | 2414
Camelot | faerie | M | 1455
我想创建一个查询,仅选择总数最高的领域,种族和性别。每次使用时,GROUP BY
我都会保持性别不变。
输出表如下所示:
realm | race | gender | total
----------+------------+--------+--------
Buffalo | faerie | F | 5972
Buffalo | footballer | M | 2093
Buffalo | raccoon | F | 2118
...
我认为我对如何比较行的理解很差。
我不知道如何写该WHERE
子句,这样当我时GROUP BY realm,race,gender
,我只能得到1个性别。
一个完美的用例DISTINCT ON
:
SELECT DISTINCT ON (realm, race) *
FROM tbl
ORDER BY realm, race, total DESC;
db <>在这里拨弄
值得注意的是,查询根本没有GROUP BY
。
假设总数是NOT NULL
,否则追加NULLS LAST
。
如果是平局,除非您添加更多ORDER BY
项目打破平局,否则获胜者是任意的。
详细说明:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句