做一个宿舍卫生分数统计系统!
表如下:
宿舍号 系别 卫生分数
101 计算机系 20
102 计算机系 30
201 土木系 20
202 环工系 30
203 土木系 10
301 计算机系 20
如何实现这个功能:
统计出计算机系有有多少个宿舍,统计出计算机系宿舍所得卫生总分和平均分!
要用存储过程实现!
表如下:
宿舍号 系别 卫生分数
101 计算机系 20
102 计算机系 30
201 土木系 20
202 环工系 30
203 土木系 10
301 计算机系 20
如何实现这个功能:
统计出计算机系有有多少个宿舍,统计出计算机系宿舍所得卫生总分和平均分!
要用存储过程实现!
asselect 系别,sum(卫生分数) AS 总分,avg(卫生分数) as 平均分
from 表名
where 系别=@系别
group by 系别
go--调用
exec sp_test '计算机系'
asselect 系别,count(*) AS 宿舍个数,sum(卫生分数) AS 总分,avg(卫生分数) as 平均分
from 表名
where 系别=@系别
group by 系别
go--调用
exec sp_test '计算机系'
create table #(宿舍号 varchar(3),系别 nvarchar(10),卫生分数 int)
insert into #
select '101', '计算机系', 20 union all
select '102', '计算机系', 30 union all
select '201', '土木系', 20 union all
select '202', '环工系', 30 union all
select '203', '土木系', 10 union all
select '301', '计算机系', 20
go--create stored procedure
create proc p1(@Department nvarchar(10))
as
select count(9) 宿舍数,sum(卫生分数) 卫生总分,avg(卫生分数) 平均分 from #
where 系别=@Department
go--execute stored procedure
p1 '计算机系'
------------------------------------------create proc p2
as
select 系别,count(9) 宿舍数,sum(卫生分数) 卫生总分,avg(卫生分数) 平均分 from #
group by 系别
go
asselect 系别,count(*) AS 宿舍个数,sum(卫生分数) AS 总分,avg(卫生分数) as 平均分
from 表名
where 系别='计算机系'
group by 系别
go--调用
exec sp_test
if exists (select name from sysobjects where name='TAB' and xtype='U')
drop table TAB
go
create table TAB (宿舍号 varchar(3),系别 varchar(20),卫生分数 int)
insert into TAB
select '101' , '计算机系', 20 union all
select '102' , '计算机系', 30 union all
select '201' , '土木系', 20 union all
select '202 ' , '环工系' , 30 union all
select '203', '土木系' , 10 union all
select '301', '计算机系', 20
--查看测试数据
select * from TAB
--创建存储过程
if exists (select name from sysobjects where name='p_TAB' and xtype='p')
drop proc p_TAB
go
create proc p_TAB
as
select count(1) as a,sum(卫生分数) as b,avg(卫生分数) as c from TAB
where 系别='计算机系'exec p_TAB
/*结果
a b c
----------- ----------- -----------
3 70 23(所影响的行数为 1 行)
*/
asselect 系别,count(*) AS 宿舍个数,sum(卫生分数) AS 总分,avg(卫生分数) as 平均分
from 表名
group by 系别
go--调用
exec sp_test