• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

大哥们,帮小弟一忙。

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

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

...全文
41 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-02-22 02:27
社区公告
暂无公告