武汉明源软件之我在考官面前是个渣滓----
华为黑名单 2014-10-17 05:31:00 今天去明源面试了下面是个SQL题目,我做完之后改卷子的人说我思路不清晰,水平差的一踏糊涂。哎做题没动脑筋怎么简单怎么写好长时间没写SQL了。大家看看我写的是错的吗?我回来上机搞了下答案是对的方法麻烦了点。麻烦你说清楚啊不能使用游标啊高考解题目还限制不能使用什么方法吗?
A 学生表
ID Name age Rank
1 李1 12 0
2 李2 33 0
3 李3 32 0
4 李4 34 0
5 李5 36 0
6 李6 37 0
7 李7 38 0
8 李8 39 0
9 李9 40 0
B分数表
ID subject score
4 语文 88
4 数学 67
5 语文 88
5 数学 67
6 语文 88
6 数学 64
7 语文 65
8 数学 67
9 语文 72
10 数学 73
1.) 统计每门功课前三名学生的ID,name ,subject ,score ?
下面是我写的没动脑筋写的
DECLARE @subject VARCHAR(50)
DECLARE tempCurSor CURSOR FOR
SELECT DISTINCT subject FROM dbo.B
OPEN tempCurSor
FETCH NEXT FROM tempCurSor INTO @subject
WHILE (@@FETCH_STATUS=0)
BEGIN
select top 3 A.ID,A.Name,B.subject,B.score
from A left join B on A.ID=B.ID
AND B.subject = @subject order by score DESC
FETCH NEXT FROM tempCurSor INTO @subject
END
CLOSE tempCurSor
DEALLOCATE tempCurSor