我有一个表标记,我需要打印具有连续增加标记的名称的详细信息。表:标记
Name Sem Marks
A 1 80
A 2 90
A 3 95
B 1 80
B 2 70
B 3 90
C 1 80
C 2 85
C 3 90
输出:
Name Sem Marks
A 1 80
A 2 90
A 3 95
C 1 80
C 2 85
C 3 90
有人能给我MySQL查询来打印输出吗
尝试使用分析函数(超前、滞后),但也使用B获取名称。
当前查询
WITH cte AS ( SELECT Name, Sem, Marks, LAG(Marks,1) OVER (PARTITION BY Name ORDER BY Sem) AS Prev_Marks FROM Marks ) SELECT Name, Sem, Marks FROM cte WHERE Marks > Prev_Marks OR Prev_Marks IS NULL ORDER BY Name, Sem;
2条答案
按热度按时间ttisahbt1#
只需对现有查询稍作修改,就可以使用带有 * not exists * 的关联:
演示Fiddle
8yoxcaq72#
你可以使用
rank()
来排名分数,然后检查每个级别的排名和Sem是否相等。Demo here