假设我有一个人员表,包含行name
,gender (M/F)
和age
。
返回的SQL查询是什么样的:
NB。这是一个人为的例子。此外,Postgres特定的答案也欢迎。
答案 0 :(得分:4)
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
顺便说一句,我发现“性别”通常用于语法参考。在这种情况下,“性”将是我将使用的术语。