数据库中的一种条件查询 case when
在最近的一场笔试中,遇到这样一道sql的题目。
有一张表如下:
要通过查询语句得到以下结果:
知识点:case 搜索函数
1:简单的case函数
case clo_name (列名)
when value1(列值) then value1' ( value1' 是我们赋予的值 )
when value2 (列值) then value2' ( value2' 是我们赋予的值)
else '其他' end
2:case 搜索函数
case when clo_name=value1' then value1'
when clo_name=value2 then value2'
else '其他' end
这两种方式均可以实现相同的功能。但是有个主意的点就是有多个条件的时候,case第一个满足的条件之后的case就会被省略掉了。
3:sum和case结合使用实现分段统计。
select sum(case when then end)newName from table
回到这个题目;
我们做出的解答就是:
SELECT year,sum( CASE WHEN season='1' THEN num ELSE 0 END)"1季度",
sum( CASE WHEN season='2' THEN num ELSE 0 END)"2季度",
sum( CASE WHEN season='3' THEN num ELSE 0 END)"3季度",
sum( CASE WHEN season='4' THEN num ELSE 0 END)"4季度"
FROM sale GROUP BY year
达到效果。