为一堆记录选择最小数据
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 所以你将为每条记录设置一个数字。以上是关于为一堆记录选择最小数据的主要内容,如果未能解决你的问题,请参考以下文章