gpt4 book ai didi

mysql - 显示列的 3 个最大值,包括带条件的重复值

转载 作者:行者123 更新时间:2023-11-29 13:42:59 25 4
gpt4 key购买 nike

我正在尝试显示每个类(class)的最高 3 分,我使用以下代码。

SELECT Name, Marks FROM mytable AS t1 
INNER JOIN
(SELECT DISTINCT(Marks) AS best_marks FROM mytable WHERE Class='class1' ORDER BY Marks DESC LIMIT 3) AS t2
ON t1.Marka = t2.best_marks ORDER BY Marks DESC, Name ASC;

此代码由 Stackoverfolow 的“Eggplant”给出。

当没有类时它会正常工作。

我的 table 是

Name     Marks     Class
S1 90 class1
S2 55 class3
S3 60 class4
S4 90 class1
S5 55 class2
S6 60 class3
S7 88 class1
S8 45 class6
S9 88 class1
s10 76 class3
s11 92 class3
s12 44 class1

就像上面的表格一样,我想显示3条记录,包括重复的记录和类别

所以我的最终输出看起来像

Name     Marks     Class
S1 90 class1
S4 90 class1
S7 88 class1
S9 88 class1

Name Marks Class
S5 55 class2

Name Marks Class
s11 92 class3
s10 76 class3
S6 60 class3


Name Marks Class
S3 60 class4

Name Marks Class
S8 45 class6

请帮助我。

最佳答案

解决这个问题的方法不止一种。下面将每个类的不同 Marks 放入一个列表中,并获取其中的前三个。然后,它将数据中的 Marks 与该列表进行比较:

select t1.*
from t1 join
(select class, substring_index(group_concat(distinct Marks order by Marks desc), ',', 3) as Marks3
from mytable t1
group by class
) tc
on t1.class = tc.class and find_in_set(t1.Marks, tc.Marks3) > 0
order by class, Marks desc;

关于mysql - 显示列的 3 个最大值,包括带条件的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17837896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com