SQL数据库求和
来源:百度知道 编辑:UC知道 时间:2024/05/08 08:35:57
创建一个数据库;如下
create table tb(姓名 varchar(10),课程 varchar(10),分数 int)
insert into tb values('张三','语文',74)
insert into tb values('张三','数学',83)
insert into tb values('张三','物理',93)
insert into tb values('李四','语文',74)
insert into tb values('李四','数学',84)
insert into tb values('李四','物理',94)
然后按课程类型分类查询
select 姓名 as 姓名,
max(case 课程 when'语文' then 分数 else 0 end)语文,
max(case 课程 when'数学' then 分数 else 0 end)数学,
max(case 课程 when'物理' then 分数 else 0 end)物理
from tb
group by 姓名
怎么在下面加上一条各课程的总分 如:
李四 74 84 94
张三 74 83 93
148 167 187
create table tb(姓名 varchar(10),课程 varchar(10),分数 int)
insert into tb values('张三','语文',74)
insert into tb values('张三','数学',83)
insert into tb values('张三','物理',93)
insert into tb values('李四','语文',74)
insert into tb values('李四','数学',84)
insert into tb values('李四','物理',94)
然后按课程类型分类查询
select 姓名 as 姓名,
max(case 课程 when'语文' then 分数 else 0 end)语文,
max(case 课程 when'数学' then 分数 else 0 end)数学,
max(case 课程 when'物理' then 分数 else 0 end)物理
from tb
group by 姓名
怎么在下面加上一条各课程的总分 如:
李四 74 84 94
张三 74 83 93
148 167 187
select 姓名 as 姓名,
max(case 课程 when'语文' then 分数 else 0 end)语文,
max(case 课程 when'数学' then 分数 else 0 end)数学,
max(case 课程 when'物理' then 分数 else 0 end)物理
from tb
group by 姓名
union
select '',
sum(case 课程 when'语文' then 分数 else 0 end)语文,
sum(case 课程 when'数学' then 分数 else 0 end)数学,
sum(case 课程 when'物理' then 分数 else 0 end)物理
from tb
select 姓名 as 姓名,max(case 课程 when'语文' then 分数 else 0 end)语文,max(case 课程 when'数学' then 分数 else 0 end)数学,max(case 课程 when'物理' then 分数 else 0 end)物理 from tb group by 姓名
union all
select '' 姓名 ,sum(语文),sum(数学),sum(物理) from (
select 姓名 as 姓名,max(case 课程 when'语文' then 分数 else 0 end)语文,max(case 课程 when'数学' then 分数 else 0 end)数学,max(case 课程 when'物理' then 分数 else 0 end)物理 from tb group by 姓名
) a