日期:2014-05-18  浏览次数:20603 次

求几个简单SQL!
1、求全班每个同学的总成绩大于530的学员信息?
表结构为:
姓名 成绩 科目

2、请问子查询快,还是联接查询快?(一般情况下)

3、where后面可不可以跟聚合函数?

注:以上问题能答多少就答多少,答多答少都有分送!

------解决方案--------------------
1、求全班每个同学的总成绩大于530的学员信息? 
表结构为: 
姓名 成绩 科目 

SQL code
select 学员信息.* from 学员信息,(
select 姓名 from 成绩 group by 姓名 having sum(成绩)>530
) as t
where t.姓名=学员信息.姓名

------解决方案--------------------
1. select * from [table]
group by 姓名
having sum(成绩)>530
2.看情况而定
3.where 后不可以加 聚合函数
------解决方案--------------------
SQL code
1
select * from 表 tp
where exists(
select 1 from 表 where 学号=tp.学号
group by 学号 having sum(分数)>530
)
2、请问子查询快,还是联接查询快?(一般情况下) 

联接查询快

3、where后面可不可以跟聚合函数? 

不可以

------解决方案--------------------
竟然慢了一步,如果你说的是两个表就是楼上的写法,一个表的话可以看下我的
------解决方案--------------------
1、求全班每个同学的总成绩大于530的学员信息? 
表结构为: 
姓名 成绩 科目 

SQL code
select * from tb where 姓名 in (select 姓名 from tb group by 姓名 having(sum(成绩)) >= 530)

------解决方案--------------------
SQL code

1、求全班每个同学的总成绩大于530的学员信息? 
表结构为: 
姓名    成绩     科目 

select * from tab a
where exists(select 1 from tab b 
where a.姓名=b.姓名
group by b.姓名
having sum(成绩)>530)


2、请问子查询快,还是联接查询快?(一般情况下) 
子查询快

3、where后面可不可以跟聚合函数? 
where 后面只能跟限制条件
聚合函数需要跟在Having 后面

注:以上问题能答多少就答多少,答多答少都有分送!