假设我有一张人桌,其中有name
、gender (M/F)
和age
。
返回的 SQL 查询会是什么样子:
- 所有女性
- 最多5名男性
- 按年龄排序的人
注意。这是一个人为的例子。此外,欢迎使用 Postgres 特定的答案。
假设我有一张人桌,其中有name
、gender (M/F)
和age
。
返回的 SQL 查询会是什么样子:
注意。这是一个人为的例子。此外,欢迎使用 Postgres 特定的答案。
SELECT name, gender, age
FROM ( SELECT name, gender, age
FROM people
WHERE gender = 'F'
UNION ALL
( SELECT name, gender, age
FROM people
WHERE gender = 'M'
LIMIT 5
)
) x
ORDER BY age
请注意,上述解决方案没有选择任何特定的男性。如果需要,将排序应用于男性子查询。
这个在修剪发生之前按年龄对雄性进行排序:
SELECT name, gender, age
FROM ( SELECT name, gender, age
,ROW_NUMBER() OVER (PARTITION BY gender ORDER BY age) gender_count
FROM people
) x
WHERE gender = 'F'
OR gender_count <= 5
顺便说一句,我发现“性别”通常用于语法参考。在这种情况下,“性”将是我会使用的术语。