java统计各科成绩_写sql语句统计各个学生各科成绩(case when用法)

尊重原创:http://blog.csdn.net/love_java_cc/article/details/78268326

有如下一张表score:

建表语句:

CREATE TABLE `score` (`id`  int NOT NULL AUTO_INCREMENT ,`name`  varchar(20) NOT NULL ,`category`  varchar(20) NOT NULL ,`score`  int NOT NULL );

115bbe1c90200247367541527b2fbc13.png

现在要去查询学生的各科成绩和总分,效果如下图,用SQL语句写出来

514119522f179a53731028b33b3b9d55.png

查询的sql如下:

select name,sum(case when category='语文' then score else 0 end) as '语文',

sum(case when category='数学' then score else 0 end) as '数学',

sum(case when category='英语' then score else 0 end) as '英语',

sum(score) as '总分' from score group by name;

小结:

case when与case ... when的区别

case when后面接的是某个表的字段的时候,then可以接另外一个字段,整个字段的查询结果是then后面的类型,如上面示例中,查语文成绩,then后面是score,是整型,那么查出来该字段也是整型;

case ... when 中,case后面就接了一个字段了,那么该语句查出来的结果,其类型与case后面的字段类型一致。如:case category when '语文' then ...;该语句中,case后面是category,是varchar类型,那么这条case...when语句查出来的结果也是varchar类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值