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 st ...
- SQL 聚合函数中的数据过滤
文章目录 聚合函数中的 CASE 表达式 PostgreSQL/SQLite 中的 FILTER 选项 大家好!我是只谈技术不剪发的 Tony 老师. 今天给大家介绍一下如何在 SQL 聚合函数中进行 ...
- mysql中的merge into,SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字)...
SQL Server 2008中利用merge into关键实现insert/update自动匹配(类似于MySQL中的For Update关键字) 语法请参考: 按照语法编写语句 DECLARE @ ...
- 在函数中利用scanf为结构体数组赋值
结构体数组指针作为函数参数,通过数组的首地址与偏移量对结构体数组进行scanf的赋值,在函数中通过指针间接访问到其指向的内存 程序当中,编写函数,输入5个学号(int),5个姓名(字符串),5个成绩数 ...
- 【SQL】update中使用case when
1.创建测试表及数据 CREATE TABLE graduates ( name varchar(255) , income int4(255) ); INSERT INTO graduates VA ...
- Oracle的SQL*Plus工具中的复制和粘贴技巧
步骤一:鼠标移至想要复制内容的开始. 步骤二:用右手食指按下鼠标左键. 步骤三:向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一样. 步骤四:内容选取完毕后(所选内容全部反显),鼠标左键按 ...
- python中的case语句_python技巧 switch case语句
不同于C语言和SHELL,python中没有switch case语句,关于为什么没有,官方的解释是这样的 使用Python模拟实现的方法: def switch_if(fun, x, y): if ...
- SQL中的case when then else end用法
2019独角兽企业重金招聘Python工程师标准>>> Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sexWHEN '1' THEN ...
- SQL中的CASE WHEN用法
SQL中Case的使用方法 Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...
最新文章
- Handler 实现的一个循环操作
- 字符串翻转的两种方法(C++版本)
- 单纯形法(二)(线性规划的基本定理)
- threading多线程模块
- ubuntu12.04下安装NVIDIA驱动
- mysql命令行导入dmp文件,oracle的备份文件(dmp)导入mysql数据库方法
- netty 使用阻塞发送_大数据、分布式都用到了的Netty,这几大核心知识你一定要看看!...
- python 存储对象_Python使用redis存储对象
- 翻译:Towards Lingua Franca Named Entity Recognition with BERT(基于BERT的通用语命名实体识别)
- 可开流量主 微信小程序云开发抽奖小程序源码
- lpush rpush 区别_php-redis中文参考手册_list容器相关_lPush_rPush_lPushx_rPu...
- 学术报告PPT的latex模板
- AddMvcCore,AddControllers,AddControllersWithViews,AddRazorPages的区别
- 2019年AI领域回顾:稳定发展还是幻想破灭?
- 计算机课导入语,信息技术课的提问和导入技巧
- 网络安全工程师自主学习计划表(具体到阶段目标)
- win2003 64位 企业版 (win 2003_r2_enterprise_x64.iso)下载地址
- 集美大学第七届天梯赛校选题解
- libusb android pc,libusb: android上集成libusb库
- 共创RPA发展生态,2019中国RPA应用与发展论坛在北京成功举办
热门文章
- Windows10+HP M176N奇怪的发送打印命令不执行任务就消失的问题
- 《Gliding vertex on the horizontal bounding box for multi-oriented object detection》算法详解
- python--mysql--驱动简介和使用
- 计算机程序设计技能鉴定,计算机程序设计员国家职业技能鉴定考核指导
- Set集合下的奇葩,TreeSet有序而且类型相同
- 今天第一次电面,国信证券金融工程
- 图的遍历(DFS和BFS)
- CVPR2022 目标检测方向文章(附摘要)
- 不到七千入手的高性能笔记本,游匣G15实测
- Nginx:正向代理与反向代理