请教 sql 有关分组聚合问题
正文:
CREATE TABLE student (
name VARCHAR (36) NOT NULL,
grade int2 NOT NULL,
gender int2 NOT NULL
)
上面是学生表,现在需求是:筛选出所有男生数量大于 50,女生数量小于 60 的所有年级,以及年级的男女学生数量,还有需要分页和男女数量排序
可以使用下面的代码方式进行解决:
SELECT
SUM(CASE WHEN gender = TRUE THEN 1 ELSE 0 END) AS boy_count,
SUM(CASE WHEN gender = FALSE THEN 1 ELSE 0 END) AS girl_count,
grade
FROM
student
GROUP BY
grade
HAVING
SUM(CASE WHEN gender = TRUE THEN 1 ELSE 0 END) > 50 OR
SUM(CASE WHEN gender = FALSE THEN 1 ELSE 0 END) < 60;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。