SQL集合函数中case when then 使用技巧
来源:互联网 发布:i like it what is it 编辑:程序博客网 时间:2024/06/05 09:32
那么在集合函数中它有什么用呢 ?
假设数据库有一张表名为student的表。
如果现在要你根据这张表,查出江西省男女个数,广东省男生个数,浙江省男女个数 怎么写SQL语句?即要生成下结果表
答案是:
SELECT sex, Count (CASE province WHEN '广东省' THEN '广东省' END)AS 广东省, Count (CASE province WHEN '江西省' THEN '江西省' END)AS 江西省, Count (CASE province WHEN '浙江省' THEN '浙江省' END)AS 浙江省FROM studentGROUP BY sex
count()函数即根据给定的范围和group by(统计方式) 而统计行数据的条数
我们一步步来理解上面语句
1. select sex from student (查询数据表中的存在的男女条数)
2.select sex, count (*) as num from student group by sex (查询表中男女数量)
3.select sex ,province, count (*)as num from student group by sex,province (查询各省男女数量)
重点来了,如果我把count() 中的 号换成任一列名呢? 如count(province) 会怎样?
4.select sex ,province, count (province)as num from student group by sex,province (查询各省男女数量)
结果跟上图一样:这说明换不换都一样。又有count (province)等价于 count(case province when ‘浙江省’ then ‘浙江省’ else province end )
但是如果我们缩小范围呢即count(case province when ‘浙江省’ then ‘浙江省’ end ) 那么请看下面
5.select sex ,province, count ( case province when ‘浙江省’ then ‘浙江省’ end )as num from student group by sex,province
即统计男女数量范围限定在浙江省 再精简一下即下面
6.select sex, count ( case province when ‘浙江省’ then ‘浙江省’ end ) as 浙江省 from student group by sex
已经接近我们的要求了,现在只要加上另几个字段就是了
7.select sex ,count ( case province when ‘广东省’ then ‘广东省’ end )as 广东省 ,count ( case province when ‘江西省’ then ‘江西省’ end )as 江西省 ,count ( case province when ‘浙江省’ then ‘浙江省’ end )as 浙江省 from student group by sex
小结:当然实现有很多种方法 可以多个子查询拼接起来也不无可厚非。我这只是一种思路
补充:case when then 知识点
(1) select (case province when ‘浙江省’ then ‘浙江’ when ‘江西省’ then ‘江西’ end ) as 省份 from student
如果默认范围如果没全包含则为空 像上图的广东省为空
(2)select (case province when ‘浙江省’ then ‘浙江’ when ‘江西省’ then ‘江西’ else province end ) as 省份 from student
- SQL集合函数中case when then 使用技巧
- SQL集合函数中case when then 使用技巧
- SQL集合函数中case when then 使用技巧
- SQL集合函数中case when then 使用技巧
- SQL集合函数中case when then 使用技巧
- SQL集合函数中利用case when then技巧
- 集合函数中case when then 使用技巧
- sql中case when then使用实例
- sql中case when then
- SQL中case when then的使用实例
- sql --case when then
- sql case when then
- sql case when then
- sql中case when then简单用法
- SQL中case when then用法
- SQL中CASE WHEN THEN的用法
- SQL中case when then 用法
- SQL中case when then用法
- jeditable参数详解
- SQL学习之:约束
- 使用MFC过程中遇到的问题以及解决方法(一)
- 1.首先是环境搭建adt
- VS2013常用快捷键
- SQL集合函数中case when then 使用技巧
- 使用jQuery插件时避免重复引入jquery.js文件(jQuery 重复加载错误以及修复方法)
- 43. Multiply Strings
- 幻读和不可重复读的区别
- 深入理解函数内部原理(5)——闭包
- 虚继承下对象的内存分布
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 对于 RxJava2 的 认知与直接应用(一)
- codeforces Educational Round 16 E. Generate a String