从每组id_student
中选择id_student
,其中id_desireCollage=5
不在前5行学生ID中。
| 识别号|id_期望拼贴|id_学生|
| - ------| - ------| - ------|
| 1个|1个|1个|
| 第二章|第二章|1个|
| 三个|三个|1个|
| 四个|四个|1个|
| 六个|五个|1个|
| 七|第二章|第二章|
| 八个|五个|第二章|
| 九|1个|第二章|
| 十个|三个|第二章|
| 十一|七|第二章|
| 十二|四个|三个|
| 十三|三个|三个|
| 十四|第二章|三个|
| 十五|1个|三个|
| 十六|八个|三个|
| 十七|九|三个|
| 十八|七|三个|
| 十九|五个|三个|
我试过:
select id_student
from student_desire
group by(id_student)
having id_desireCollage not in first 5 rows
预期结果为:
| id_学生|
| - ------|
| 三个|
3条答案
按热度按时间0sgqnhkj1#
可以使用
ROW_NUMBER()
。例如:cvxl0en22#
可以使用
ROW_NUMBER
分析函数:或者,从Oracle 12(不带任何函数)使用
MATCH_RECOGNIZE
:其中,对于示例数据:
所有输出:
| ID_学生|
| - ------|
| 三个|
您可以不用分析函数或
MATCH_RECOGNIZE
,而是使用相关子查询和聚合函数,但效率(低得多)(并且确实使用了COUNT
聚合函数):fiddle
amrnrhlw3#
假设ID在组内是连续的,您可以查询ID id_desireCollage=5与第一个id_desireCollage之间的差值大于5的学生: