如何解决如何从列表中查询:[1,1,1,2,3,4,2,2,5,3]
我只想查询像 1 一样连续重复 3 次的数字。但不是 2,因为它不是连续的。
如何在 sql 中实现相同的目标?
解决方法
SQL 表表示 无序 集合(好吧,技术上是多集合)。假设您的“列表”存储为表中的行并且有一个排序列,那么您可以使用 lead()
:
select distinct number
from (select t.*,lead(number) over (order by <ordering col>) as next_number,lead(number,2) over (order by <ordering col>) as next_number_2
from t
) t
where number = next_number and number = next_number_2;
,
如果数据以行的形式存储在表中,Gordon 的逻辑可以简化并修改为任意数量的重复:
select distinct number
from t
qualify
-- same value in the last n rows,n=3
min(number) over (order by <ordering col> rows 2 preceding) =
max(number) over (order by <ordering col> rows 2 preceding)
-- to avoid false positives for the first n-1 rows
and count(number) over (order by <ordering col> rows 2 preceding) = 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。