Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中使用其他列中的较低值进行分组_Mysql - Fatal编程技术网

在mysql中使用其他列中的较低值进行分组

在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

如果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. 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
请参阅。