`
简单说下 case when 的用法。
当想用一条语句 按不同的角度统计数据时, 可以考虑使用case when的用法。
比如说, 表table里有一个状态字段, 值1代表已完成, 值2代表未完成。 此时想统计 table表中所有数据个数, 和 已完成的数据个数 ,和 未完成的数据个数。

这时候该如何操作呢?

     select count(1) table where 1=1 // 查全部select count(1) table where status=1 // 查已完成select count(1) table where status=2 // 查未完成

可以写三条不同的sql , 通过控制status的值来完成。 不过这样要查三次库。
这里要说明一下, count(1) 和 count() 一样, 都是扫描全表。虽然count()自带优化,但两者速度上差不多。 count(1) 在计算时, 数据库是先将所有数据查出来,然后挨个行去遍历,如果当前行有数据,count(1)计数会加1.
上面的sql可以合并为一条SQL。

   select count(1) as sum , count(case when status =1 then 1 end ) as finally , count(case when status =2 then 1 end ) as unFinally  from table

这样的写法只需要查一次数据库。
case when status =1 then 1 end 表示只有当status =1 是count传入1

case when 的使用相关推荐

  1. Go 学习笔记(62)— Go 中 switch 语句中的 switch 表达式和 case 表达式之间的关系

    switch 语句对 switch 表达式的结果类型,以及各个 case 表达式中子表达式的结果类型都是有要求的. 毕竟,在 Go 语言中,只有类型相同的值之间才有可能被允许进行判等操作. 1. sw ...

  2. Linux shell 学习笔记(8)— 使用结构化命令(if-then 语句、数值比较、字符串比较、文件比较、case 语句)

    1. 使用 if-then 语句 最基本的结构化命令就是if-then语句.if-then语句有如下格式. if command then ​ commands fi 或者 if command; t ...

  3. bash中case的用法

    看到一些很实用的脚本,由于之前对于bash脚本的积累都比较离散,没有一个全面的了解,在这里记录一下: bash的case语句用法 case语句的语法规则是: case $变量名 in 模式1)命令序列 ...

  4. switch case

    1 var v = 2;2 switch (true) {3 case 0:4 alert("值为零");5 break;6 case v > 0 && v ...

  5. 变体类的使用 package record case【转载】

    **************理论区 start********************* DELPHI中记录的存储方式       在DELPHI中,我们用record关键字来表明一个记录,有时候,我 ...

  6. case when 子查询_Oracle数据库-单表查询

    本章涉及单张表中的查询语句,包含常用的条件查询.范围查询.模糊查询等,跨表查询后续将会介绍. 1.基本查询语句 格式:SELECT[DISTINCT] column_name,-|* FROM tab ...

  7. shell脚本求和_【零基础学云计算】Shell编程之case语句与循环语句

    case多分支语句 循环语句 for循环语句 while循环语句 untli循环语句 Shell函数 Shell数组 case语句的结构 针对变量的不同取值,分别执行不同的命令序列 case 变量值 ...

  8. 【Mysql】日期、行变列(IF、CASE WHEN THEN)语句总结

    获取昨天的日期 日期相减函数 datediff select datediff(curdate(),INTERVAL 1 DAY) ; 删除Person表中重复的Email数据,只保留id最小的一条 ...

  9. 【PostgreSQL】行变列、非空(CASE WHEN、COALESCE)语句总结

    1. 源表结构: order_id class count 111101100002 3 0 111101100012 1 3 11110112002 1 2 111101100202 2 0 2. ...

  10. C 语言中的 switch 语句 case 后面是否需要加大括号

    事件原由为编辑器的自动缩进,当 case 换行后不自动缩进. 于是在在想可以可否在 case 后面再大括号,让其自动缩进. 查了资料,发现 case 是可以加大括号的,相当于代码块. 而且还有另外一个 ...

最新文章

  1. python怎么导入时间-python模块导入和time模块
  2. 【PHP】多线程请求 curl_multi_init()
  3. Python爬取京东商品
  4. 该项目不在桌面中删除不了_win7系统桌面上的文件删不掉怎么办
  5. springboot属性注入
  6. SAP S/4HANA Cloud SDK 入门介绍
  7. 《塑造互联网思维的企业》一一第4章 全球商务向社会化媒体的转变
  8. 江苏师范大学计算机控制考试题库,江苏技术师范学院2006¬—2007学年第2学期《微机原理与接口技术》试卷(2份,有答案)...
  9. JavaScript学习(五十六)—寄生式继承(临时构造器的使用)
  10. SSM框架项目的pom导入包和xml配置
  11. ResourceBundle和Properties(转载)
  12. 整合TextBox与Label 创建新控件--EFLabelText
  13. c语言课设代写一般多少钱_海南彩礼钱一般给多少 海南娶媳妇要多少钱
  14. 虚拟机是怎么实现的?(转)
  15. 【愚公系列】2022年02月 Django商城项目 26-搜索引擎功能实现
  16. 高德地图react版本开源库react-amap与react-amap-next分析
  17. Unity利用单反相机拍照、录制视频
  18. 基于STM32平台,学习BLDC记录
  19. 2022年终总结:给心一个立住的理由【失败后自我恢复、压力中自我拯救】
  20. 看看华为、阿里大数据架构师的必备技能!

热门文章

  1. (大佬)睿智的目标检测13——Keras搭建mtcnn人脸检测平台
  2. 小程序token有效期_微信小程序token过期时间后重新获取-微信小程序过期恢复步骤-微信小程序怎么找...
  3. matlab中hamming窗的 c/c++ 版本的实现
  4. 安卓录屏软件实现 开维PRA自动生成代码Ctrl.js
  5. 计算机网络 谢希仁 第八版 学习笔记
  6. unity笔记_四舍六入五成双
  7. 可以ping通外网,ping不通内网,同时可以Ping网关,但是外部ping不到IP
  8. rar和unrar压缩解压
  9. Oracle-DDL语句详解
  10. 匿名管道(Pipe)和命名管道(FIFO)