在mysql中使用其他列中的较低值进行分组
如果tval具有重复/重复值,则需要在在mysql中使用其他列中的较低值进行分组,mysql,Mysql,如果tval具有重复/重复值,则需要在id和group上分组,以及tval的最大值和组的较低值。谢谢你的帮助 身份证件 时间 组 特瓦尔 3. 0 A. 1.184 3. 0.5 A. 2.173 3. 1. A. 1.065 3. 3. A. 1.143 3. 6. A. 3.222 3. 9 A. 1.851 3. 12 A. 3.222 4. 0 A. 1.184 4. 0.5 A. 2.173 4. 1. A. 1.065 4. 3. A. 1.143 4. 0.7 A. 2.322 4
id
和group
上分组,以及tval
的最大值和组的较低值。谢谢你的帮助
身份证件
时间
组
特瓦尔
3.
0
A.
1.184
3.
0.5
A.
2.173
3.
1.
A.
1.065
3.
3.
A.
1.143
3.
6.
A.
3.222
3.
9
A.
1.851
3.
12
A.
3.222
4.
0
A.
1.184
4.
0.5
A.
2.173
4.
1.
A.
1.065
4.
3.
A.
1.143
4.
0.7
A.
2.322
4.
9
A.
1.851
4.
12
A.
1.345
使用
NOT EXISTS
筛选表,这样您就可以只为id
和group
的每个组合获取最大tval
的行,然后放弃获取最小timel
:
SELECT s1.id, s1.trt, MIN(timel) timel, s1.tval
FROM sample s1
WHERE NOT EXISTS (
SELECT 1
FROM sample s2
WHERE s2.id = s1.id AND s2.trt = s1.trt AND s2.tval > s1.tval
)
GROUP BY s1.id, s1.trt, s1.tval
如果您的MySql版本为8.0+,则可以使用行数()
窗口函数:
SELECT id, trt, timel, tval
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY id, trt ORDER BY tval DESC, timel) rn
FROM sample
) t
WHERE rn = 1
请参阅。