为一堆记录选择最小数据

Posted

技术标签:

【中文标题】为一堆记录选择最小数据【英文标题】:select minimum data for bunch of records 【发布时间】:2019-03-25 15:16:51 【问题描述】:

我有这张桌子:

我想为每串彩色记录找到最小的date_time值,即表格的结果将是这张表格。

需要哪个 SQL 命令?

【问题讨论】:

先是间隙和孤岛,然后是窗口函数/分组依据。如果您提供dbfiddle.uk 数据,很容易实现。 您展示 Excel 的照片。你有实际的 SQL 表吗?如果是,请显示该表的表定义。还请以文本形式显示您拥有的数据。对于 SQL,查询将是 select Strand1, min(DATE_TIME) from mytable group by Strand1 @Corion 你有多个0 组是不行的 首先你需要为每个连续的000,111,000,...然后你可以使用GROUP BY @lukaszSzozda:啊,是的,现在我理解了“着色”。是的,那么窗口函数就足够了;) 【参考方案1】:

这有点像缝隙和孤岛问题。但最简单的理解方式是简单的lag()

select t.*
from (select t.*,
             lag(t.strand1) over (order by t.date_time) as prev_strand1
      from t
     ) t
where prev_strand1 is null or prev_strand1 <> strand1;

【讨论】:

【参考方案2】:

如果您想为每个 Strand1 的任何值找到 date_time 值的最小值

select Strand1, min(DATE_TIME) from mytable where Strand1 = whatever group by Strand1

【讨论】:

我不想将所有 0 或 1 个 srtrand1 数据分组。使用您的命令,我们将提供 1 条记录。 你想要最小的 date_time 所以你将为每条记录设置一个数字。

以上是关于为一堆记录选择最小数据的主要内容,如果未能解决你的问题,请参考以下文章

石子合并问题 C语言

简单选择排序法

简单选择排序就是简单~~~

选择排序

选择排序

如何在 MySQL 中选择字段具有最小值的数据?