1
假設我有一張人員表,其中包含行name
,gender (M/F)
和age
。SQL查詢僅限於記錄的一個子集
會是什麼一個SQL查詢樣子返回:
- 所有女人
- 最多的5名男性人
- 人年齡
NB排序。這是一個人爲的例子。此外,Postgres特定的答案歡迎。
假設我有一張人員表,其中包含行name
,gender (M/F)
和age
。SQL查詢僅限於記錄的一個子集
會是什麼一個SQL查詢樣子返回:
NB排序。這是一個人爲的例子。此外,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
BTW,我發現「性別」通常用於語法引用。在這種情況下,「性」就是我會用到的術語。
小改進:['UNION ALL'](http://www.postgresql.org/docs/current/interactive/sql-select.html#SQL-UNION)而不是'UNION'。 –
你的意思是一個單一的查詢,可以一起做所有的事情嗎?就像所有女性和前5名男性的'UNION'產品按年齡交叉排序? –