码迷,mamicode.com
首页 > 数据库 > 详细

Mysql:case when then end 的用法

时间:2018-09-18 22:34:18      阅读:512      评论:0      收藏:0      [点我收藏+]

标签:函数   create   lse   select   var   分享图片   def   exists   sele   

1、创建一张表,我们这表名为 t_score

drop table if exists t_score;
create table t_score
(
	id int primary key auto_increment,
	name varchar(20),
	course varchar(20),
	score double
) default charset = utf8;

2、添加若干条数据

insert into `t_score`(name,course,score) values
    (‘王海‘, ‘语文‘, 86),
    (‘王海‘, ‘数学‘, 83),
    (‘王海‘, ‘英语‘, 93),
    (‘陶俊‘, ‘语文‘, 88),
    (‘陶俊‘, ‘数学‘, 84),
    (‘陶俊‘, ‘英语‘, 94),
    (‘刘可‘, ‘语文‘, 80),
    (‘刘可‘, ‘数学‘, 86),
    (‘刘可‘, ‘英语‘, 88),
    (‘李春‘, ‘语文‘, 89),
    (‘李春‘, ‘数学‘, 80),
    (‘李春‘, ‘英语‘, 87);

3、用case when then end 函数进行查询

SELECT name,
max(CASE course WHEN ‘语文‘ THEN score ELSE 0 END ) Chinese,
max(CASE course WHEN ‘数学‘ THEN score ELSE 0 END ) math,
max(CASE course WHEN ‘英语‘ THEN score ELSE 0 END ) English,
sum(score) score
FROM t_score  
GROUP BY name
union
select ‘TOTAL‘,
sum(CASE course WHEN ‘语文‘ THEN score ELSE 0 END ),
sum(CASE course WHEN ‘数学‘ THEN score ELSE 0 END ),
sum(CASE course WHEN ‘英语‘ THEN score ELSE 0 END ),
sum(score) from t_score;

效果图:

 技术分享图片

 

Mysql:case when then end 的用法

标签:函数   create   lse   select   var   分享图片   def   exists   sele   

原文地址:https://www.cnblogs.com/Qi1007/p/9671194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!