我的数据库类有一个我无法弄清楚的问题。
我有一张名为counties的表,如下所示:
state_code | name | population
| |
| |
(每个 state_code 中有多个县)
还有一个叫做states的表,它只是
state_code | name
|
|
无论如何,我需要一个返回方案(state_name,county_name,county_population)的查询,它按州名的顺序列出每个州中人口最多的五个县名(按人口降序排列)以及这些县的人口。
我有一个生成正确方案的查询,但它显示的结果太多,而不仅仅是前 5 个:
SELECT state.name AS state_name, county.name AS county_name, county.population
FROM state JOIN county ON state.code = county.state_code
GROUP BY state.name, county.name, county.population
ORDER BY state.name, county.population DESC
我尝试了涉及排名的更复杂的解决方案,但是我们学校只有 PostgreSQL 版本 8.3,它没有 PARTITION OVER 或 RANK(),这让事情变得非常困难。
谢谢