1.case用法

-- 用法一:

case when 条件1 then 字段取值1

when 条件2 then 字段取值2

when 条件3 then 字段取值3

else 字段取值4-- 如果上述全部不满足,则执行

end

-- 用法二:

case 字段名

when 取值1 then 字段取值1

when 取值2 then 字段取值2

when 取值3 then 字段取值3

else 字段取值4-- 如果上述全部不满足,则执行

end

2.if用法

if(条件,取值1,取值2)--若条件满足,则取值1,否则取值2

例子:现有用户行为数据表etl_online,查找2020年12月1日-2020年12月15日文章的下发数量,下发未曝光数量,曝光未点击数量,点击数量:

create table etl_online(

user_id varchar(20),-- 用户id

doc_id varchar(20),-- 文章id

auction varchar(20),-- 用户行为

p_day varchar(20)-- 时间

)

select p_day,doc_id,

case when click>0 then '点击'

when click<0 and rview>0 then '曝光未点击'

when rview<0 and vview>0 then '下发未点击'

when view<0 then '未下发'

else '其他' end as user_action,

count(user_id) as usrnum

(select p_day,doc_id,user_id, sum(click) as click, sum(view) as vview, sum(review) as rview

from

(select p_day,doc_id,user_id

if (uaction ='CLICK',1,0) as click,

if(uaction='VIEW',1,0) as vview,

if(uaction='RVIEW',1,0) as rview

from eta_online

where p_day between '2020-12-01' and '2020-12-15'

group by 1,2,3,4,5,6) as a

group by 1,2,3

) as a

group by 1,2,3

再来一个例子:

查询语文成绩优秀(85以上),良好(70-85),及格(60-70)的人数:

方法一:

select GP,count(GP) as num from

(select stu_id,

case when grade>=85 then'优秀'

when grade>=70 and grade <85 then '良好'

when grade<70 and grade >=60 then '及格'

else '不及格' end as GP

from

grade

join

(select couid from course where couname='语文') as a

on a.couid=grade.couid)

group by 1

方法二:

select count(if(grade>=85,stu_id,null)) as A,

count(if(grade>=70 and grade<85,stu_id,null)) as B,

count(if(grade>=60 and grade<70,stu_id,null)) as C,

count(if(grade<60,stu_id,null)) as D

from grade

join

(select couid from course where couname='语文') as a

on grade.stu_id=a.stu_id

java if case when_【SQL学习笔记4】case when 和if的用法相关推荐

  1. sql语句多个表补齐四位_SQL学习笔记 - CTE通用表表达式和WITH用法

    CTE or WITH WITH语句通常被称为通用表表达式(Common Table Expressions)或者CTEs. WITH语句作为一个辅助语句依附于主语句,WITH语句和主语句都可以是SE ...

  2. 探针一号的SQL学习笔记

    SQL学习笔记 文章目录 SQL学习笔记 1.问题 2.SQL基本语句 3.SQL基本数据查询 4.SQL复杂点的数据查询 5.DML操作 6.数据表操作 1.问题 什么是数据库? 是一个仓库,可以按 ...

  3. 拉勾网《32个Java面试必考点》学习笔记之十一------消息队列与数据库

    本文为拉勾网<32个Java面试必考点>学习笔记.只是对视频内容进行简单整理,详细内容还请自行观看视频<32个Java面试必考点>.若本文侵犯了相关所有者的权益,请联系:txz ...

  4. Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  5. 《Java并发编程实践》学习笔记之一:基础知识

    <Java并发编程实践>学习笔记之一:基础知识 1.程序与进程 1.1 程序与进程的概念 (1)程序:一组有序的静态指令,是一种静态概念:  (2)进程:是一种活动,它是由一个动作序列组成 ...

  6. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  7. 判断题:oracle自带的sql语言环境是pl/sql,Oracle之PL/SQL学习笔记之数据类型(三)

    Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到 ...

  8. 拉勾网《32个Java面试必考点》学习笔记之二------操作系统与网络知识

    本文为拉勾网<32个Java面试必考点>学习笔记.只是对视频内容进行简单整理,详细内容还请自行观看视频<32个Java面试必考点>.若本文侵犯了相关所有者的权益,请联系:txz ...

  9. 拉勾网《32个Java面试必考点》学习笔记之一------Java职业发展路径

    本文为拉勾网<32个Java面试必考点>学习笔记.只是对视频内容进行简单整理,详细内容还请自行观看视频<32个Java面试必考点>.若本文侵犯了相关所有者的权益,请联系:txz ...

  10. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

最新文章

  1. 3、 PPT合并形状
  2. python 文件中出现 Indentation Error: unexpected indent 的错误
  3. uvalive4835(模拟)
  4. ThhinkPHP5隐藏入口文件index.php
  5. [软件测试airtest软件安装]——填坑
  6. 阻止你变现的,从来都不是开源许可证
  7. 数据结构之栈与递归的实现及应用(斐波拉契数列递归解法和strlen递归解法)
  8. java实现linux变量替换_linux java 配置 含环境变量 | 学步园
  9. 尼得科向全新的伺服技术挑战
  10. 【SA TSP】基于matlab模拟退火算法求解34城市旅行商问题【含Matlab源码 882期】
  11. ArcMap打不开.jpg .bmp
  12. TTTTTTZZZZZZ(系统编程---初识线程,查看线程调用栈的三种方法)10
  13. HTML 下拉式菜单
  14. DropDownMenu下拉菜单
  15. 白话Elasticsearch59-数据建模实战_ Nested Aggregation/ Reverse nested Aggregation对嵌套的博客评论数据进行聚合分析
  16. [激光原理与应用-19]:《激光原理与技术》-5- 激光器的增益、损耗、自激振荡条件
  17. php excel 导出图片,phpexcel 导出多张图片
  18. 一文讲通HTML样式管理,利用CSS语法实现html样式更改(在html文件内)
  19. 以高德为例,超级APP启动提速的实践和思考
  20. 【MySQL】MySQL表的CRUD操作(基础)

热门文章

  1. 台式计算机如何取消屏幕密码,台式电脑怎么取消锁屏?
  2. cityscape 数据集 mmsegmentation训练记录
  3. termux自动启动ssh
  4. 文件压缩原理是什么?
  5. 保证线程安全的10个小技巧
  6. android解锁方法,手机如何解锁密码 几种安卓手机解锁方法介绍
  7. stm32f407工程改为stm32f401的方法,并修改时钟
  8. IndentationError:unindent does not match any outer indentation解决方案
  9. POJ-Bound Found | 尺取法+绝对值特性
  10. t3服务器一登录就运行时错误,用友T3软件登陆系统管理提示运行时错误3709