大哥们,帮小弟一忙。

symbol_bc 2008-02-22 02:27:40
大哥们,帮小弟一忙。
字段含义:
stu_id:学生id score:学生分数 ada_id:学生所属学院id: name:学院名称

表stu如下:
stu_id score ada_id
1 90 1
2 80 1
3 64 2
4 75 2
5 85 2
6 54 3
7 76 4
8 88 4

表ada如下:
ada_id name
1 信息学院
2 管理学院
3 化工学院
4 计算机学院

题目:使用sql语句查询出相同学院的学生的总分数和这个学院的学生数和学院名称。查询结果应如下格式:
学院id 学院名称 学生数 学生总成绩
1 信息学院 2 170
2 管理学院 3 224
3 化工学院 1 54
4 计算机学院 2 164

但我不会写,请大家帮忙!!!!!

...全文
63 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
heshengfen123 2008-02-22
  • 打赏
  • 举报
回复
select ada.ada_id 学院id,ada.name 学院名称,count(stu.stu_id) 学生数,sum(stu.score) 学生总成绩 from stu,ada where stu.ada_id=ada.ada_id group by ada.ada_id,ada.name
conan304 2008-02-22
  • 打赏
  • 举报
回复
declare @t table(stu_id int identity(1,1),score int,ada_id int)
insert @t(score,ada_id) select 90,1
union all select 80,1
union all select 64,2
union all select 75,2
union all select 85,2
union all select 54,3
union all select 76,4
union all select 88,4

declare @ada table(ada_id int,[name] varchar(20))
insert @ada select 1,'信息学院'
union all select 2,'管理学院'
union all select 3,'化工学院'
union all select 4,'计算机学院'

select 学院id=b.ada_id,
学院名称=b.[name],
学生数=count(*),
学生总成绩=sum(score)
from @t a join @ada b on a.ada_id=b.ada_id
group by b.ada_id,b.[name]
order by 1
/*

学院id 学院名称 学生数 学生总成绩
----------- -------------------- ----------- -----------
1 信息学院 2 170
2 管理学院 3 224
3 化工学院 1 54
4 计算机学院 2 164
*/
dawugui 2008-02-22
  • 打赏
  • 举报
回复
create table stu(stu_id int, score int, ada_id int)
insert into stu values(1, 90 ,1 )
insert into stu values(2, 80 ,1 )
insert into stu values(3, 64 ,2 )
insert into stu values(4, 75 ,2 )
insert into stu values(5, 85 ,2 )
insert into stu values(6, 54 ,3 )
insert into stu values(7, 76 ,4 )
insert into stu values(8, 88 ,4 )
create table ada(ada_id int, name varchar(10))
insert into ada values(1, '信息学院')
insert into ada values(2, '管理学院')
insert into ada values(3, '化工学院')
insert into ada values(4, '计算机学院')
go

select b.ada_id,b.name, isnull(count(*),0) 学生数 , isnull(sum(a.score),0) 学生总成绩
from stu a left join ada b
on a.ada_id = b.ada_id
group by b.ada_id,b.name
order by b.ada_id,b.name

--drop table stu,ada

/*
ada_id name 学生数 学生总成绩
----------- ---------- ----------- -----------
1 信息学院 2 170
2 管理学院 3 224
3 化工学院 1 54
4 计算机学院 2 164

(所影响的行数为 4 行)
*/

dawugui 2008-02-22
  • 打赏
  • 举报
回复
create table stu(stu_id int, score int, ada_id int)
insert into stu values(1, 90 ,1 )
insert into stu values(2, 80 ,1 )
insert into stu values(3, 64 ,2 )
insert into stu values(4, 75 ,2 )
insert into stu values(5, 85 ,2 )
insert into stu values(6, 54 ,3 )
insert into stu values(7, 76 ,4 )
insert into stu values(8, 88 ,4 )
create table ada(ada_id int, name varchar(10))
insert into ada values(1, '信息学院')
insert into ada values(2, '管理学院')
insert into ada values(3, '化工学院')
insert into ada values(4, '计算机学院')
go

select b.ada_id,b.name, count(*) 学生数 , sum(a.score) 学生总成绩
from stu a , ada b
where a.ada_id = b.ada_id
group by b.ada_id,b.name
order by b.ada_id,b.name

--drop table stu,ada

/*
ada_id name 学生数 学生总成绩
----------- ---------- ----------- -----------
1 信息学院 2 170
2 管理学院 3 224
3 化工学院 1 54
4 计算机学院 2 164

(所影响的行数为 4 行)
*/

dawugui 2008-02-22
  • 打赏
  • 举报
回复
select b.ada_id,b.name, count(*) 学生数 , sum(a.score) 学生总成绩
from stu a , ada b
where a.ada_id = b.ada_id
group by b.ada_id,b.name
tim_spac 2008-02-22
  • 打赏
  • 举报
回复
select
[学院id]=a.ada_id
,[学院名称]=a.name
,[学生总数]=count_std
,[总成绩]=sum_score
from ada a
join (
select ada_id, sum_score = sum(score), count_std = count(1)
from stu
group by ada_id
) as b on b.ada_id=a.ada_id
pt1314917 2008-02-22
  • 打赏
  • 举报
回复

select a.ada_id,name,count(1)学生数,sum(score) from ada a left join stu b
on a.ada_id=b.ada_id group by a.ada_id,name

pt1314917 2008-02-22
  • 打赏
  • 举报
回复

select a.ada_id,name,count(1)学生数,sum(score) from ada a left join stu b
on a.ada_id=b.ada_id group by b.ada_id

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧