目录
一:概述
二:使用场景
一:概述
CASE WHEN 是 SQL 中的一个条件表达式,用于在 SQL 查询中实现条件逻辑。它类似于编程语言中的 if-else 或 switch 语句。通过使用 CASE WHEN,你可以在执行查询时根据条件对结果进行分支处理。
表达式如下:
# 简单CASE函数法
CASE 要判断的字段或表达式
WHEN 常量1 THEN 要显示的值1或语句1(如果是语句,结尾需要加上分号;)
[WHEN 常量2 THEN 要显示的值2或语句2]
[…]
[ELSE 要显示的值n或语句n]
END
# CASE搜索函数法
CASE
WHEN 条件1 THEN 要显示的值1或语句1(如果是语句,结尾需要加上分号;)
[WHEN 条件2 THEN 要显示的值2或语句2]
[…]
[ELSE 要显示的值n或语句n]
END
其中条件条件1可以是表达式,也可以是数值
二:使用场景
1:我需要统计商品表根据商品价格区间确定商品的分组,分为低端商品,一般商品,高端商品
SELECT
id,name,sales_money,
CASE
WHEN sales_money < 100 THEN
'低端商品'
WHEN sales_money < 500 THEN
'一般商品' ELSE '高端商品'
END as sales_money_desc
FROM
ls_goods
也可以根据确定值来统计,比如价格为600的就是一般商品,价格为200就是低端商品
SELECT
id,name,sales_money,
CASE
WHEN sales_money =200 THEN
'低端商品'
WHEN sales_money = 600 THEN
'中级商品' ELSE '高端商品'
END as sales_money
FROM
ls_goods
还有另外一种写法,结果也是一样的。
SELECT
id,name,sales_money,
CASE sales_money
WHEN 200 THEN
'低端商品'
WHEN 600 THEN
'中级商品' ELSE '高端商品'
END
FROM
ls_goods
2:case when也可以和group by结合统计,比如根据商品价格区间在100到300的低端商品,区间在300到900为一般商品,900到1500为高端商品 ,利用case when对商品进行类型分组,再统计每个类型的商品个数
SELECT
CASE
WHEN sales_money BETWEEN 100 AND 300 THEN '低端商品'
WHEN sales_money BETWEEN 300 AND 900 THEN '一般商品'
WHEN sales_money BETWEEN 900 AND 1500 THEN '高端商品'
ELSE '其他'
END AS goods_type,
COUNT(*) AS count
FROM
ls_goods
GROUP BY
goods_type
ORDER BY
goods_type;