当前位置: 首页 > 知识库问答 >
问题:

如何按“重复”字段中的最低值分组

陈霄
2023-03-14

我在mysql中有一个查询返回如下所示的resultset

ID1     ID2     string      date
14071   3031324 string 1    2016-08-10 21:29:39
14071   3054168 string 2    2016-08-10 21:33:26
14071   3054169 string 3    2016-08-10 21:33:26
14074   2938174 string 2    2016-08-10 21:14:48
14074   2938175 string 3    2016-08-10 21:14:48
14074   2938176 string 1    2016-08-10 21:14:48
14093   2954386 string 2    2016-08-10 21:17:22
14093   3035338 string 3    2016-08-10 21:30:19

我需要对此进行过滤,以便仅对每个ID1的ID2最低的LIN进行ruturn

14071   3031324 string 1    2016-08-10 21:29:39
14074   2938174 string 2    2016-08-10 21:14:48
14093   2954386 string 2    2016-08-10 21:17:22

谢谢

共有2个答案

柳景胜
2023-03-14

您可以根据需要rank()对记录进行分区,并仅选择最低级别:

SELECT ID1, ID2, string, date
FROM (
    SELECT ID1, ID2, string, date, RANK() over ( PARTITION BY ID1, ORDER BY ID2 ASC ) rank
    FROM {your_table}
)
WHERE rank = 1
史谦
2023-03-14

您可以执行以下操作:

select *
from t
where (id1, id2) in (select id1, min(id2) from t group by id1)
 类似资料:
  • 我有以下文件: 如何发出请求,将Sigle\U 1和Sigle\U 2连接起来,并将值reslut分组? 预期结果示例: 我试过了,但还不完全

  • 问题内容: 我的索引具有如下所述的数据。 如何在Java中编写Elasticsearch查询。如果我按日期搜索2016-13-01T12:00:00我希望看到每个groupId的最新版本,其indexDate小于或等于搜索日期? 预期输出: 我没有在Elasticsearch的日期字段中看到max函数来实现这一点。 问题答案: 我将首先进行汇总,然后使用子汇总,以降序排序并返回该存储区的第一个文档

  • 问题内容: 这个问题已经在这里有了答案 : 使用Java在原始数组中查找最大值/最小值 (15个答案) 5年前关闭。 这是我的代码。我需要获取数组的最小值,最大值才能为我获取范围,无论何时输入数字,最小值均为0。请帮助我。谢谢:) 问题答案: 同样,通过更改较小的符号可以找到最小值。

  • 我试图实现对存储在列表中的对象字段值的排序。 我找到了下面的解决方案来比较字符串,但是我如何比较字符串值并相应地排序? 我想先排序"Y"状态值然后"N"

  • 我有一个数据帧,我根据-列进行分组。对于每个组,我想得到包含最大值的行(整行,而不仅仅是值)。我能够做到这一点,首先获得每个组的最大值,然后创建一个过滤器数组,然后在原始数据帧上应用过滤器。像这样, 这个解决方案是可行的,但不知何故似乎过于繁琐。有人知道更好的方法吗?最好是一条线。关于潜在的重复,我稍后会处理这些:)

  • 本文向大家介绍如何在MySQL中按分组字段排序?,包括了如何在MySQL中按分组字段排序?的使用技巧和注意事项,需要的朋友参考一下 要对分组字段进行ORDER BY,请将ORDER BY CASE与一起使用。CASE评估不同的条件,而ORDER BY则按升序或降序对值进行排序。MySQL用于查找匹配项。 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记