我有一個學生記錄,我需要按年齡分組。我有這樣的場景:具有相同Count功能的SQL多個CASE時
- 如果年齡組只有一個成員,顯示他/她的姓名和性別
- 否則
- 顯示「一些字符串」作爲名稱
- 檢查成員的性別,如果全部FEMALE,則返回FEMALE。如果所有的男性,男的回報,否則返回MIX
我想出了這個查詢
SELECT Count(id) as GROUP_SIZE,
CASE WHEN COUNT(id) = 1 THEN name ELSE 'SOME STRING' END as name,
CASE WHEN COUNT(id) = 1 THEN sex ELSE (
CASE WHEN COUNT(CASE WHEN sex = 'MALE' THEN 1 END) = 0 THEN 'FEMALE'
WHEN COUNT(CASE WHEN sex = 'FEMALE' THEN 1 END) = 0 THEN 'MALE'
ELSE 'MIX'
END
) END as sex
FROM students GROUP BY age
這個查詢輸出我要的情景,但我多次調用數(ID)。這會影響性能作爲多個計數被稱爲?或者如果Count(id)被執行一次,它是否會在成功調用Count(id)時有一個恆定的時間?我試過CASE WHEN GROUP_SIZE
但它不工作。請告訴我如何改善這一點。謝謝。
參考:http://stackoverflow.com/questions/2876909/count-and-countcolumn-name-whats-the-diff – Barmar