看到的sql面试题

自己分析要拆开查询逻辑清楚点:

--先根据班级分组查到各班总分

Select  class  as N’班级’, sum(amount )as N’总分’  from  T_a  group  by  class 

--查出总参考人数

Select count(*) as N’参考总人数’ from  T_a group by username

--查出语文参考人数

Select count(*) as N’语文参考人数’ from T_a where Name=’语文’ group by username 

--然后想办法把select组合起来

-----解决方案--------------------


create table #tb([ID] int,[Class] varchar(4),[UserName] varchar(4),[Name] varchar(4),[Amount] int)
insert  into #tb
select 1,'一班','张三','数学',90 union all
select 2,'一班','张三','语文',89 union all
select 3,'一班','李四','数学',26 union all
select 4,'一班','李四','语文',31 union all
select 5,'二班','王五','数学',90 union all
select 6,'二班','王五','语文',80 union all
select 7,'二班','钟伟','数学',70

select class as 班级, sum(Amount) as 总分,COUNT(DISTINCT username) as 考试总人数,
SUM(case when Name='语文' then 1 else 0 end) as 语文参考人数
from #tb
group by class
drop table #tb
posted @ 2013-10-28 15:41  南瓜asp  阅读(257)  评论(0编辑  收藏  举报