我有一个简单的表,包含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/