我们都知道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 st ...

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

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

  3. mysql中的merge into,SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)...

    SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字) 语法请参考: 按照语法编写语句 DECLARE @ ...

  4. 在函数中利用scanf为结构体数组赋值

    结构体数组指针作为函数参数,通过数组的首地址与偏移量对结构体数组进行scanf的赋值,在函数中通过指针间接访问到其指向的内存 程序当中,编写函数,输入5个学号(int),5个姓名(字符串),5个成绩数 ...

  5. 【SQL】update中使用case when

    1.创建测试表及数据 CREATE TABLE graduates ( name varchar(255) , income int4(255) ); INSERT INTO graduates VA ...

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

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

  7. python中的case语句_python技巧 switch case语句

    不同于C语言和SHELL,python中没有switch case语句,关于为什么没有,官方的解释是这样的 使用Python模拟实现的方法: def switch_if(fun, x, y): if ...

  8. SQL中的case when then else end用法

    2019独角兽企业重金招聘Python工程师标准>>> Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sexWHEN '1' THEN ...

  9. SQL中的CASE WHEN用法

    SQL中Case的使用方法 Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...

最新文章

  1. Handler 实现的一个循环操作
  2. 字符串翻转的两种方法(C++版本)
  3. 单纯形法(二)(线性规划的基本定理)
  4. threading多线程模块
  5. ubuntu12.04下安装NVIDIA驱动
  6. mysql命令行导入dmp文件,oracle的备份文件(dmp)导入mysql数据库方法
  7. netty 使用阻塞发送_大数据、分布式都用到了的Netty,这几大核心知识你一定要看看!...
  8. python 存储对象_Python使用redis存储对象
  9. 翻译:Towards Lingua Franca Named Entity Recognition with BERT(基于BERT的通用语命名实体识别)
  10. 可开流量主 微信小程序云开发抽奖小程序源码
  11. lpush rpush 区别_php-redis中文参考手册_list容器相关_lPush_rPush_lPushx_rPu...
  12. 学术报告PPT的latex模板
  13. AddMvcCore,AddControllers,AddControllersWithViews,AddRazorPages的区别
  14. 2019年AI领域回顾:稳定发展还是幻想破灭?
  15. 计算机课导入语,信息技术课的提问和导入技巧
  16. 网络安全工程师自主学习计划表(具体到阶段目标)
  17. win2003 64位 企业版 (win 2003_r2_enterprise_x64.iso)下载地址
  18. 集美大学第七届天梯赛校选题解
  19. libusb android pc,libusb: android上集成libusb库
  20. 共创RPA发展生态,2019中国RPA应用与发展论坛在北京成功举办

热门文章

  1. Windows10+HP M176N奇怪的发送打印命令不执行任务就消失的问题
  2. 《Gliding vertex on the horizontal bounding box for multi-oriented object detection》算法详解
  3. python--mysql--驱动简介和使用
  4. 计算机程序设计技能鉴定,计算机程序设计员国家职业技能鉴定考核指导
  5. Set集合下的奇葩,TreeSet有序而且类型相同
  6. 今天第一次电面,国信证券金融工程
  7. 图的遍历(DFS和BFS)
  8. CVPR2022 目标检测方向文章(附摘要)
  9. 不到七千入手的高性能笔记本,游匣G15实测
  10. Nginx:正向代理与反向代理