SQL数据分析之流程控制语句【if,case...when详解】

零、写在前面

本文所有代码均是在SQL ZOO平台进行,数据也该平台下的world表,所有代码均已通过测试。
sql zoo

一、if单条件判断语句

1、语法结构:if(判断条件, 成立值, 不成立值)

select if(1=1,'Yes','No');

2、判断亚洲和非洲中国土面积大于200万的国家是否为人口大国(人口大于2亿)

select continent,name,if(population>200000000,'人口大国','小国') 人口规模 
from world
where continent in ('Asia','Africa') and area>2000000
order by continent

执行结果:
1.2.1
3、查询国土面积大于100万的亚洲国家中的总体经济水平(大于1万亿为高经济体)

select name,gdp,if(gdp>1000000000000,'高经济体','低经济体') as 总体经济
from world
where continent='Asia' and area>1000000

1.3.1

二、case…when多条件判断

1、单条件(if…else效果)

将上述if修改成case…when:

#判断亚洲和非洲中国土面积大于200万的国家是否为人口大国(人口大于2亿)
select continent,name,
CASE
WHEN population>200000000 THEN '人口大国'
ELSE '小国' 
END AS 人口规模 
from world
where continent in ('Asia','Africa') and area>2000000
order by continent

#查询国土面积大于100万的亚洲国家中的总体经济水平(大于1万亿为高经济体)
select name,gdp,
CASE
when gdp>1000000000000 then '高经济体'
else '低经济体'
END as 总体经济
from world
where continent='Asia' and area>1000000

2、多条件(if…else if…else效果)

从gdp粗略判断国土面积大于50万,人口大于2000万的亚洲和欧洲国家的状态:

select continent,name,population,gdp,
CASE
WHEN gdp>=3000000000000 THEN '一等大国'
WHEN gdp>=2000000000000 and gdp<=3000000000000 THEN '二等大国'
WHEN gdp>=200000000000 and gdp<=1000000000000 THEN '三等大国' 
ELSE '发展中大国'
END AS 国家状态 
from world
where continent in ('Asia','Europe') and area>500000 and population>20000000
order by continent

2.2.1

3、常量用法(switch…case效果)

case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2

else 要显示的值n或语句n;

例如:把人口数大于5000万国家的大洲名翻译成对应的中文

select name,population,
CASE continent
WHEN 'Asia' THEN '亚洲'
WHEN 'Afica' THEN '非洲'
WHEN 'South America' THEN '南美洲'
WHEN 'North America' THEN '北美洲'
WHEN 'Europe' THEN '欧洲'
ELSE '其他大洲'
END AS 所属大洲
from world
where population>=50000000

2.3.1

三、ifnull填充空值

Ifunull(字段名,“值1”)如果说这列的内容为null,则用’'来填充。如果不是null的话,则显示原有值。

select id, ifnull('score','缺考') as 分数;

若分数为null,则表示该学生缺考。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值