SELECT
CASE WHEN (IFNULL(o.ENDTIME,99))=99
THEN
(
CASE WHEN (CURDATE()-pc.FORECASTTIME)>0
THEN
(
CASE WHEN (CURDATE()-pc.FORECASTTIME)>7 THEN 2 ELSE 1 END
)
ELSE
0
END
)
ELSE 0
END AS overtime
FROM tb_a
解释:如果结束时间为空的情况下,当前时间大于预期结束时间的时,如果超过七天则返回2,否则返回1,如果不大于当前时间返回0
SELECT CASE WHEN (IFNULL(o.ENDTIME,99))=99THEN(CASE WHEN (CURDATE()-pc.FORECASTTIME)>0THEN(CASE WHEN (CURDATE()-pc.FORECASTTIME)>7 THEN 2 ELSE 1 END)ELSE0END)ELSE 0END AS overtime...
if(条件,取值1,取值2)--若条件满足,则取值1,否则取值2
例子:现有用户行为数据表etl_online,查找2020年12月1日文章的下发数量,下发未曝光数量,曝光未点击数量,点击数量:
create table etl_online(
user_
My
SQL
中有一个用于判断多种情况的语句,类似于java中的switch…
case
,在写
SQL
过程中需要用到
case
when
嵌套
,在这里记录一下,以防忘记。
简单例子:
SELECT
WHEN ISNULL(work_order_no) THEN
(
CASE
WHEN 2 > 1 THEN 11 ELSE 22 END)
(
CASE
WHEN 1 > 0 THEN 33 ELSE 66 END)
qk_20030102
WHERE
work_or
1、简单的
case
when语句:
case
sex when ’1' then '男' when ’2’ then '女’else ’其他’ end
2、复杂的
case
when语句:
case
when month in (01,02,03)
CASE
a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
CASE
WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
在将xgb模型转化为
sql
的过程中,用
嵌套
判断模式,会减少计算量,因此搜索了一下如何在hive中实现
嵌套
格式的if-else判...
case
when可以
嵌套
使用,写出更复杂的逻辑实现
select trunc(a.out_date) out_date,
nvl((select x.dept
from neubi_work.dim_dept x...
CASE
WHEN T12.ISPRINT='1' THEN
CASE
WHEN T.VECENTYPE='3' THEN
CASE
WHEN T3.PRBNSCOPE_NAME IS NOT NULL THEN
T3.PRBNSCOPE_NAME
ELSE CRTMIS.GETBNSCOPE(T3.BNSCOP
下面给出一个
case
… when 函数的双层
嵌套
使用实例,用于查看逻辑回归预测模型的评估情况:
select mark , pre_mark ,count(*) from
(select emp_no,
label ,
when deptno = '01' then
简单
CASE
WHEN函数:
CASE
SCORE WHEN ‘A’ THEN ‘优’ ELSE ‘不及格’ END
CASE
SCORE WHEN ‘B’ THEN ‘良’ ELSE ‘不及格’ END
CASE
SCORE WHEN ‘C’ THEN ‘中’ ELSE ‘不及格’ END
等同于,使用
CASE
WHEN条件表达式函数实现:
CASE
WHEN SCORE = ‘A’...