我有一个简单的表,包含id、key、level、table和data如下:

id key level
1   a   1
2   a   2
3   a   3
4   a   3
5   b   1
6   b   3
7   c   1
8   c   2
9   c   2

问题是:我传入一个id数组(数据库支持find-in操作),我只想计算给定id列表中的最高级别,并按键分组。
例如:传入[2,3],返回的数据应为:
key toplevel count
a     3        1


我传入[2,3,8,9],返回的数据应该是:
key toplevel count
a     3        1
c     2        2

我不知道我的问题是否被清楚地描述过(不擅长英语),如果你不明白,请问我。

最佳答案

这将在PostgreSQL中工作。

Select * from(
Select
    keyss,
    levels,
    counts,
    ROW_NUMBER() OVER ( partition by keyss
            order by levels desc) as rownum
from
(Select keyss, levels, count(*) as counts from test where id in (2,3,4,5) group by keyss, levels) as X
) as Y
Where Y.rownum = 1;

您可以在MySQL中模拟行数,或者我认为在最新版本的MySQL中应该有一个类似的函数可以使用。

关于mysql - SQL:按多个限制分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58551162/

10-13 06:51
查看更多