快捷搜索:  汽车  科技

sql训练题及答案,SQL练习50题7

sql训练题及答案,SQL练习50题7where C=t.C的逻辑是 select t.* ((select count(distinct score) from sc where C = t.C and score > t.score) 1 ) px from sc t order by t.C px; 注意:SQL查询语句:保留名次空缺select t.* ((select count(1) from sc where C = t.C and score > t.score) 1 ) 排名 from sc t order by t.C 排名; 不保留名次空缺:

sql训练题及答案,SQL练习50题7(1)

题目:按各科成绩进行排序,并显示排名

表结构:

sql训练题及答案,SQL练习50题7(2)

思路:1)对某一分数,只要知道有多少个分数大于此分数, 1就是名次===保留名次空缺

2)对某一分数,只要知道有多少个不重复分数大于此分数, 1就是名次===不保留名 次空缺

SQL查询语句:

保留名次空缺

select t.* ((select count(1) from sc where C = t.C and score > t.score) 1 ) 排名 from sc t order by t.C 排名;

不保留名次空缺:

select t.* ((select count(distinct score) from sc where C = t.C and score > t.score) 1 ) px from sc t order by t.C px;

注意:

where C=t.C的逻辑是

1.t中取第一行值,包含S C score,譬如S:01 C:02 score:70

2.执行子查询

select count(1) from sc

where C = t.C and score > t.score

从sc中查询所有满足条件的条数: C=02且score>70

3.循环执行第一第二步,直至查询完t中全部的值

结果展示:

保留名次空缺:

sql训练题及答案,SQL练习50题7(3)

不保留名次空缺:

sql训练题及答案,SQL练习50题7(4)

猜您喜欢: