SQL:如何用一个sql统计出全校男生个数、女生个数以及总人数
2016-08-20 01:04
751 查看
情景:统计全校的男生、女生、以及总人数
表结构如下:
方式一:分别查询
方式二:left join
方式三:使用dual
方式四:使用group by
方式五:使用case when(mysql) 或 decode(oracle)
总结:其中方式一、二、三都是执行了三次查询,方式四直接使用group by 但是返回的是一列数据(纵向),而且没有总人数的统计,方式五巧妙地将性别转成数字,并用sum方法分别计算出学生男女个数,返回的结果是三列数据(横向)。
(实际工作中,还要考虑到字段值为空的情况)
表结构如下:
table : students coulmns : studentID char(40) NOT NULL studentNAME char(40) NULL sexID char(20) NULL (1:boy;2:girl)
方式一:分别查询
SELECT COUNT(1)AS allcount FROM students ; SELECT COUNT(1)AS boycount FROM students WHERE sexID = 1; SELECT COUNT(1)AS girlcount FROM students WHERE sexID = 2;
方式二:left join
SELECT a.allcount, b.boycount, c.girlcount FROM (SELECT COUNT(1)AS allcount FROM students)AS a LEFT JOIN (SELECT COUNT(1)AS boycount FROM students WHERE sexID = 1)b ON 1=1 LEFT JOIN (SELECT COUNT(1)AS girlcount FROM students WHERE sexID = 2)c ON 1=1
方式三:使用dual
SELECT (SELECT COUNT(1)AS allcount FROM students)AS a, (SELECT COUNT(1)AS boycount FROM students WHERE sexID = 1)b, (SELECT COUNT(1)AS girlcount FROM students WHERE sexID = 2)c FROM DUAL
方式四:使用group by
SELECT COUNT(1) FROM students GROUP BY sexID
方式五:使用case when(mysql) 或 decode(oracle)
-- mysql: 9671 SELECT COUNT(1)AS allcount, SUM(CASE WHEN sexID=1 THEN 1 ELSE 0 END)AS boycount, SUM(CASE WHEN sexID=1 THEN 0 ELSE 1 END)AS girlcount FROM students -- oracle: SELECT COUNT(1)AS allcount, SUM(DECODE(sexID,1,1,0))AS boycount, SUM(DECODE(sexID,2,1,0))AS girlcount FROM students
总结:其中方式一、二、三都是执行了三次查询,方式四直接使用group by 但是返回的是一列数据(纵向),而且没有总人数的统计,方式五巧妙地将性别转成数字,并用sum方法分别计算出学生男女个数,返回的结果是三列数据(横向)。
(实际工作中,还要考虑到字段值为空的情况)
相关文章推荐
- 查询统计一个班级表中男生女生各自的数量的sql
- 如何处理多人同时登录同一个账号以及如何统计在线人数和访问量?
- 转:如何实现网站在线人数以及历史访问人数的统计
- 统计某个班男女生人数_sql练习题
- 按照班级,统计班级的总人数,男生人数和女生人数分别是多少
- linux find下如何统计一个目录下的文件个数以及代码总行数的命令
- 请你编写一个统计《C++程序设计》课程的成绩。统计的内容包括最高分、最低分、平均分,以及在90100,80 89,70 79,60 69和60以下个分数段的人数
- 如何用SQL统计某个字符在一个字符串中出现的次数
- pl/sql 如何配置连接远程一个或多个数据库(1.同一个ip不同用户名,2.不同ip不同用户名)以及记住密码
- 一个用来统计相同姓名人数的SQl语句
- linux下如何统计一个目录下的文件个数以及代码总行数的命令
- linux下如何统计一个目录下的文件个数以及代码总行数的命令
- 如何统计一个目录下的文件个数以及代码总行数的命令
- 如何实现 网站在线人数以及历史访问人数的统计
- linux下如何统计一个目录下的文件个数以及代码总行数的命令
- linux下如何统计一个目录下的文件个数以及代码总行数的命令
- 用一条sql统计所一个班级的男女人数
- SQL技巧:如何统计博客每天的总点击量和每天的总点击人数
- 用PL/SQL语言编写一程序,实现按部门分段统计各个工资段的职工人数、以及各部门的工资总额