SQL集合函数中case when then 使用技巧
我们都知道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 使用技巧相关推荐
- SQL集合函数中利用case when then技巧
我们都知道SQL中适用case when then来转化数据库中的信息 比如 select (case sex when 0 then '男' else '女' end) AS sex from ...
- SQL 聚合函数中的数据过滤
文章目录 聚合函数中的 CASE 表达式 PostgreSQL/SQLite 中的 FILTER 选项 大家好!我是只谈技术不剪发的 Tony 老师. 今天给大家介绍一下如何在 SQL 聚合函数中进行 ...
- Oracle的SQL*Plus工具中的复制和粘贴技巧
步骤一:鼠标移至想要复制内容的开始. 步骤二:用右手食指按下鼠标左键. 步骤三:向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一样. 步骤四:内容选取完毕后(所选内容全部反显),鼠标左键按 ...
- 在SQL Server中使用SQL Coalesce函数
This article explores the string manipulation using SQL Coalesce function in SQL Server. 本文探讨了在SQL S ...
- mySQL中stuff,sql stuff函数的语法和作用
sql stuff函数用于删除指定长度的字符,并可以在制定的起点处插入另一组字符.sql stuff函数中如果开始位置或长度值是负数,或者如果开始位置大于第一个字符串的长度,将返回空字符串.如果要删除 ...
- sql replace函数_SQL REPLACE函数概述
sql replace函数 In this article, I'll show you how to find and replace data within strings. I will dem ...
- sql concat函数_使用SQL Plus(+)和SQL CONCAT函数SQL Server CONCATENATE操作
sql concat函数 This article explores SQL Server Concatenate operations using the SQL Plus (+) operator ...
- Sql Server中Case函数的使用(上篇)----转载
Case具有两种格式.简单Case函数和Case搜索函数. 代码 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' E ...
- mysql sql decode函数用法_SQL查询中DECODE函数和CASE WHEN 比较
一,DECODE函数 其基本语法为: Sql代码DECODE(value, if1, then1, if2, then2, if3, then3,...ifn, thenn, else) DECODE ...
最新文章
- 创建在“system.net/defaultProxy”配置节中指定的 Web 代理时出错。
- .net framework4.6项目的dll升级后,未找到方法“System.String.GetPathsOfAllDirectoriesAbove”解决
- DB2安全(一)——概述
- 学习:Java泛型之一
- 如何恢复ORACLE数据(冷备份)
- Matlab向量与多项式
- 少儿编程100讲轻松学python(二)-python cv2模块怎么安装
- Guava之RangeMap
- 召唤AI大神与病毒作战!Kaggle发起CORD-19数据集文本挖掘竞赛
- go语言---特殊类型的函数
- C++ 命名空间(namespace)
- JAVA类加载的委托模型
- 按键显示按键编码 keycode
- 两消两现指的是_精细胞减二末期会有“两现”吗
- xp系统怎么弄清微软服务器名称,xp系统如何做远程服务器呢
- Honeywell RTU2020使用.软件篇
- 开车总结-2021.7
- 基于ASP的反垃圾邮件管理系统的设计与实现
- 怎样查看服务器操作系统密码,IIS提示:您未被授权查看该页 并弹出输入用户名密码Windows服务器操作系统 -电脑资料...
- SCI投稿全攻略—起飞站