• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > SQL集合函数中case when then 使用技巧

SQL集合函数中case when then 使用技巧

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了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

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL 的CASE WHEN 语句使用说明
  • MySQL中使用case when 语句实现多条件查询的方法
  • MySQL中的if和case语句的使用
  • mysql 存储过程case语句语法与实例教程
  • MySQL 的CASE WHEN 语句使用说明
  • SQL集合函数中case when then 使用技巧
  • sqlserver Case函数应用介绍
  • sqlserver中Case的使用方法(上下篇)第1/2页
  • sql 中 case when 语法使用方法
  • Oracle case when用法

相关文章

  • 2018-12-05关于mysqli_affected_rows()函数的详细介绍
  • 2018-12-05Oracle rollup和cube分析
  • 2018-12-05oracle group by语句实例测试
  • 2017-05-11通过mysqladmin远程管理mysql的方法
  • 2017-05-11MySQL Antelope和Barracuda的区别分析
  • 2018-12-05Ubuntu与windows双系统下共用MySQL数据库的方法
  • 2017-05-11Mysql索引会失效的几种情况分析
  • 2018-12-05如何查看MySQL的版本?
  • 2018-12-05在ORACLE移动数据库文件
  • 2018-12-05Oracle 的入门心得 强烈推荐

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 让mysqldump变成并发导出导入的魔法
    • 对MySQL配置参数 my.ini/my.cnf的详细解析
    • mysql 不能插入中文问题
    • CentOS 7下安装与配置MySQL 5.7教程详解
    • MySQL安全性指南 (2)(转)
    • SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Upd
    • 新Orcas语言特性-查询句法
    • MSSQL2005数据库备份导入MSSQL2000
    • 详细介绍CentOS7安装Mysql并设置开机自启动的方法
    • Mysql 开启Federated引擎的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有