我们都知道SQL中适用case when then来转化数据库中的信息 比如

select (case sex when 0 then '男' else '女' end) AS sex from studentInfo那么在集合函数中它有什么用呢 ?

假设数据库有一张表名为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 student group 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 使用技巧相关推荐

  1. SQL集合函数中利用case when then技巧

    我们都知道SQL中适用case when then来转化数据库中的信息 比如  select (case sex when 0 then '男' else '女' end) AS sex  from ...

  2. SQL 聚合函数中的数据过滤

    文章目录 聚合函数中的 CASE 表达式 PostgreSQL/SQLite 中的 FILTER 选项 大家好!我是只谈技术不剪发的 Tony 老师. 今天给大家介绍一下如何在 SQL 聚合函数中进行 ...

  3. Oracle的SQL*Plus工具中的复制和粘贴技巧

    步骤一:鼠标移至想要复制内容的开始. 步骤二:用右手食指按下鼠标左键. 步骤三:向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一样. 步骤四:内容选取完毕后(所选内容全部反显),鼠标左键按 ...

  4. 在SQL Server中使用SQL Coalesce函数

    This article explores the string manipulation using SQL Coalesce function in SQL Server. 本文探讨了在SQL S ...

  5. mySQL中stuff,sql stuff函数的语法和作用

    sql stuff函数用于删除指定长度的字符,并可以在制定的起点处插入另一组字符.sql stuff函数中如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串.如果要删除 ...

  6. sql replace函数_SQL REPLACE函数概述

    sql replace函数 In this article, I'll show you how to find and replace data within strings. I will dem ...

  7. sql concat函数_使用SQL Plus(+)和SQL CONCAT函数SQL Server CONCATENATE操作

    sql concat函数 This article explores SQL Server Concatenate operations using the SQL Plus (+) operator ...

  8. Sql Server中Case函数的使用(上篇)----转载

    Case具有两种格式.简单Case函数和Case搜索函数. 代码 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' E ...

  9. mysql sql decode函数用法_SQL查询中DECODE函数和CASE WHEN 比较

    一,DECODE函数 其基本语法为: Sql代码DECODE(value, if1, then1, if2, then2, if3, then3,...ifn, thenn, else) DECODE ...

最新文章

  1. 创建在“system.net/defaultProxy”配置节中指定的 Web 代理时出错。
  2. .net framework4.6项目的dll升级后,未找到方法“System.String.GetPathsOfAllDirectoriesAbove”解决
  3. DB2安全(一)——概述
  4. 学习:Java泛型之一
  5. 如何恢复ORACLE数据(冷备份)
  6. Matlab向量与多项式
  7. 少儿编程100讲轻松学python(二)-python cv2模块怎么安装
  8. Guava之RangeMap
  9. 召唤AI大神与病毒作战!Kaggle发起CORD-19数据集文本挖掘竞赛
  10. go语言---特殊类型的函数
  11. C++ 命名空间(namespace)
  12. JAVA类加载的委托模型
  13. 按键显示按键编码 keycode
  14. 两消两现指的是_精细胞减二末期会有“两现”吗
  15. xp系统怎么弄清微软服务器名称,xp系统如何做远程服务器呢
  16. Honeywell RTU2020使用.软件篇
  17. 开车总结-2021.7
  18. 基于ASP的反垃圾邮件管理系统的设计与实现
  19. 怎样查看服务器操作系统密码,IIS提示:您未被授权查看该页 并弹出输入用户名密码Windows服务器操作系统 -电脑资料...
  20. SCI投稿全攻略—起飞站

热门文章

  1. linux卸载aix nmon,aix nmon监控
  2. 华为荣耀套路太深,手机性价比低。
  3. 尝鲜!我在华为鸿蒙上编写的第一个 Hello World!那些说鸿蒙是PPT的可以闭嘴了!...
  4. 几种冒泡(起泡)排序的总结
  5. simulink中比scope模块还好用的平替出图工具?
  6. 麦角硫因/超级抗氧化
  7. ajax 跨域请求post请求,ajax POST跨域请求完美解决
  8. 事件(DOM事件绑定)
  9. Apriori关联规则挖掘算法函数
  10. eNSP华为模拟器使用——(4)eNSP模拟HTTP服务器