SQL中case when的用法
类别:数据库 浏览量:3110
时间:2013-9-26 SQL中case when的用法
SQL中case when的用法Case具有两种格式。简单Case函数和Case搜索函数。
简单Case函数
1、语法
CASE input_expression_r
END
2、实例
CASE sex WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
Case搜索函数
1、语法
CASE
END
2、实例
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
综合实例
有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key)
国家(country) | 人口(population) |
中国 | 600 |
美国 | 100 |
加拿大 | 100 |
英国 | 200 |
法国 | 300 |
日本 | 250 |
德国 | 200 |
墨西哥 | 50 |
印度 | 250 |
根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。
洲 | 人口 |
亚洲 | 1100 |
北美洲 | 250 |
其他 | 700 |
解决方法:
--如果使用Case函数,SQL代码如下:
SELECT SUM(population),
CASE country
WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END
FROM Table_A
GROUP BY CASE country
WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END;
--同样的,我们也可以用这个方法来判断工资的等级,并统计每一等级的人数。SQL代码如下;
SELECT
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600 THEN '2'
WHEN salary > 600 AND salary <= 800 THEN '3'
WHEN salary > 800 AND salary <= 1000 THEN '4'
ELSE NULL END salary_class,
COUNT(*)
FROM Table_A
GROUP BY
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600 THEN '2'
WHEN salary > 600 AND salary <= 800 THEN '3'
WHEN salary > 800 AND salary <= 1000 THEN '4'
ELSE NULL END;
您可能感兴趣
- sqlserver常用配置调整(sql server性能调优 I/O开销的深入解析)
- Sql Server 更新锁(UPDLOCK)
- MySQL DATE_FORMAT()用法
- mysql存储过程和函数(MySQL存储过程的查询命令介绍)
- mysql中自增字段类型(MySQL数字类型自增的坑)
- mysql关联查询详解(详解mysql 组合查询)
- MYSQL中常用的强制性操作
- mysql常见的存储引擎(如何选择MySQL的存储引擎?)
- mysql的decimal类型(MySQL数据类型DECIMAL用法详解)
- mysql底层原理是什么(MySQL 页完全指南—浅入深出页的原理)
- mysql建立分区表指令(MySQL高级特性——数据表分区的概念及机制详解)
- mysql 自定义排序
- mysql主从复制配置(Mysql实现主从配置和多主多从配置)
- sql server使用手册(SQL Server连接查询的实用教程)
- sqlserver附加数据库时出错(SQL Server数据库附加失败的解决办法)
- mysql常见错误分析(分析MySQL抛出异常的几种常见解决方式)
- 15个新成 园 位置公布 深圳龙岗2022年共建花园建设又有大动作(15个新成园位置公布)
- 记者手记 书记带我去 巡街(记者手记书记带我去)
- 富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元 | 美通社(富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元)
- 二次创业 的富士胶片,在进博会上首次展示完成转型后的全线医疗产品(二次创业的富士胶片)
- 富士胶片 中国 我们对上海的信心没有任何改变(富士胶片中国)
- 赢麻了 富士公布2021年度财报 营利同比增长240(富士公布2021年度财报)
热门推荐
- ASP.NET根据IP获取省市地址
- nodejs如何识别接口(Node实现搜索框进行模糊查询)
- html代码简单特效(HTML实现代码雨源码及效果示例)
- navicat如何连接服务器的数据库(Navicat如何远程连接云服务器数据库)
- yii2对比springboot(Yii框架函数简单用法分析)
- Ext.MessageBox.show()的用法及参数配置
- dedecms添加模板(dedecms正文自动排版插件 伪原创站必备)
- sqlserverselect选择两个参数(SQL SERVER中SELECT和SET赋值相同点与不同点推荐)
- react事件绑定的方式和区别(react合成事件与原生事件的相关理解)
- reactnative混合开发教程(教你使用vscode 搭建react-native开发环境)