sql case when
sql中case when的应用案例
本案例分析结构如下:
- case when案例问题的描述
- case when的主要应用场景
- 实际SQL代码
一:实际案例介绍
- 描述:有一个sales表,该表为不同细分市场逐月的销量表,字段为细分级别、日期、数量、车型,其中细分级别为汽车市场的细分市场,日期为字符串类型的月度数据(201801),车型为该细分市场的相关车型,数量为该车型该月度的销量。
- 分析:该案例是一个典型的聚合统计的例子,首先想到的是应用
group by
语句对细分市场进行分组,然后需要解决的问题就是分月统计,这就需要应用case when语句了。
二:case when的主要应用场景
- 场景一:首先,case when可以应用在分类命名问题中,例如在汽车销量中对销量进行分类,单月销量小于3000台的为不及格,单月销量在3000-5000台的为一般,单月销量在5000-10000台的为较好,单月销量在10000台以上的为优秀,case when就可以在这种场景中进行应用;
- 场景二:其次,case when还可以与聚合函数一起,应用在分类统计方面,例如在汽车销量表中对销量进行分细分市场分月统计。
三:SQL代码
- 场景一的解决思路:
select 车型, 日期,
(case when 数量 < 3000 then '不及格'
when 数量 >= 3000 and 数量 < 5000 then '一般'
when 数量 >= 5000 and 数量 < 10000 then '较好'
when 数量 >= 10000 then '优秀'
end) from sales
limit 10;
- 场景二的解决思路:
select 细分市场,
sum(case when 日期 = '201810' then 数量 end) `201810月`,
sum(case when 日期 = '201811' then 数量 end) `201811月`,
sum(case when 日期 = '201812' then 数量 end) `201812月`
from sales
where 细分市场 <> 'Null'
group by 细分市场;
以上就是case when的相关用法,更多内容敬请期待!
相关阅读
SqlHelper.ExecuteScalar返回插入的记录的主键
INSERT INTO T_LIMS_Inspection({0}) output INSERTED.ID VALUES ({1});
NAVH-WK6A-DMVK-DKW3
一般在sql server 中对日期进行处理都会使用Convert 函数。但是在对日开发中,am 或者 pm 需要显示成 (午前)(午後)。这时用sql
mysql字段类型tinyint、smallint、mediumint、int、bi
mysql建模的过程中,对于优化来讲一个非常重要的点就是字段类型的设置,好的字段类型的设置可以帮助更快的查询数据同时能节约硬盘空
今天做项目时遇到这样一个需求:数据库有一张album相册表和一张image照片表,页面要显示的是相册的名称和该相册下所有的照片(一个相册