作用一: 联合分组统计数据
需求: 将下图的数据按照"洲"举行统计总人数
(一)方式一: 使用普通的case函数举行统计
select (
case name
when ‘中国’ then ‘亚洲’
when ‘日本’ then ‘亚洲’
when ‘美国’ then ‘北美洲’
when ‘加拿大’ then ‘北美洲’
else ‘其他’ end
) 洲,
sum(population) 总数
from t_country
GROUP BY
(
case name
when ‘中国’ then ‘亚洲’
when ‘日本’ then ‘亚洲’
when ‘美国’ then ‘北美洲’
when ‘加拿大’ then ‘北美洲’
else ‘其他’ end
)
方式一统计结果
(二)方式二: 使用搜刮的case函数举行统计
select (
case
when name in(‘中国’,‘日本’) then ‘亚洲’
when name in(‘美国’,‘加拿大’) then ‘北美洲’
else ‘其他’ end
) 洲,
sum(population) 总数
from t_country
GROUP BY
(
case
when name in(‘中国’,‘日本’) then ‘亚洲’
when name in(‘美国’,‘加拿大’) then ‘北美洲’
else ‘其他’ end
)
方式二统计结果
作用二: 分条件更新字段值
(一)需求: 将工资低于3000的员工涨幅工资20%,工资即是高于3000的员工涨幅8%,数据如下:
可能有人看到这个需求的第一反应,想直接可以直接通过如下两条update语句直接更新:
update t_salary set salary = salary + (salary * 0.2) where salary < 3000;
update t_salary set salary = salary + (salary * 0.08) where salary >= 3000;
但是,假如是这样实行的话现实上会存在问题,比如:原来工资在2900的员工,实行完第一条语句后工资会酿成3480,此时,再实行第二条更新语句,因为满意工资大于三千,则又会去添加多8%的工资,这样明显就是不符合我们的需求的,**所以,假如想完成这个需求,又不想写太复杂的sql,可以通过case函数完成这个功能。
**
**(二)使用搜刮的case函数举行分条件修改(此处不能使用简单case函数,因为简单case函数不能判断带范围的条件)
**
update t_salary
set
salary =
(
case
when salary < 3000 then salary + salary * 0.2
when salary >= 3000 then salary + salary * 0.08
else salary
end
)
**(三)分条件修改后结果
**
作用三: 检查表中字段值是否同等
(一)需求: 判断两个表中name字段值是否同等,并返回结果,数据如下:
**(二)使用搜刮的case函数举行分条件修改(此处不能使用简单case函数,因为简单case函数不能判断带范围的条件)
**
select name,
(
case
when desciption in(select description from t_user2) then ‘同等’
else ‘不同等’
end
) 比较结果
from t_user1
**(三)比较结果:
**
作用四: 行转列(重点-口试常见)
(一)需求: 将表中数据按照每个门生姓名 、科目、成绩举行排序,数据如下:
**(二)使用case函数转换
**
// 使用普通case函数
SELECT NAME,
max( CASE class WHEN ‘语文’ THEN grade ELSE 0 END ) 语文,
max( CASE class WHEN ‘数学’ THEN grade ELSE 0 END ) 数学,
max( CASE class WHEN ‘英语’ THEN grade ELSE 0 END ) 英语
FROM
t_source
GROUP BY
NAME
// 使用搜刮case函数
SELECT NAME,
max( CASE WHEN class = ‘语文’ THEN grade ELSE 0 END ) 语文,
max( CASE WHEN class = ‘数学’ THEN grade ELSE 0 END ) 数学,
max( CASE WHEN class = ‘英语’ THEN grade ELSE 0 END ) 英语
FROM
t_source
GROUP BY
NAME
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |