我有一个学生记录,我需要按年龄分组。我有这样的场景:具有相同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