declare @tab table(name varchar(50),topic varchar(50),result int)
insert into @tab values('张三','语文',81)
insert into @tab values('张三','数学',85)
insert into @tab values('张三','历史',92)
insert into @tab values('张三','地理',86)
insert into @tab values('李四','语文',65)
insert into @tab values('李四','数学',90)
insert into @tab values('王五','语文',69)
insert into @tab values('王五','数学',89)
insert into @tab values('王五','历史',94)
我昨天去一公司面试,查询分数大于80分以上的同学资料,我给的答案如下,请各位高手看有没有需要简化的地方
select * from (
select name,isnull(sum(case when topic='语文' then result else null end),100) 语文,
isnull(sum(case when topic='数学' then result else null end),100) 数学,
isnull(sum(case when topic='历史' then result else null end),100) 历史,
isnull(sum(case when topic='地理' then result else null end),100) 地理
from @tab group by name) a
where a.语文>80 and a.数学>80 and a.历史>80 and a.地理>80
所有回答(3)
什么分数?题意不明确,什么资料也不明确?
输出格式也不明确,另外你的解答也不大对劲,没有成绩的哪科给个100应该也不大合理吧
ChatinCode
select * from tab group by name having min(result)>80
select * from user where result>80 group by userName
以后才能回答,未注册用户请先