sql - 有没有办法根据某些值将行分成组?
问题描述
考虑这张表:
我想根据它们的 id 和 price 值将这些行分成组:只要两行具有相同的 id 和 price并且不被属于同一组的任何其他行划分,所以我希望输出是 sorta像这样:
我尝试使用窗口函数,但最后一行与前 3 行具有相同的组。我缺少什么吗?
解决方案
这是一个差距和孤岛问题。一种方法是使用lag()
检测变化然后累积和:
select t.*,
sum(case when prev_price = price then 0 else 1 end) over
(partition by id order by dt) as group_num
from (select t.*,
lag(price) over (partition by id order by dt) as prev_price
from t
) t
推荐阅读
- r - R格——意想不到的传说
- python - 我找不到为什么我的列表不是变量
- javascript - meta name="theme-color" 的动画
- python - 为什么我的网格权重不会影响窗口的布局
- javascript - 如何获取当前 HTML 的 href 值?
- r - NLS 逻辑回归的 optimx 问题
- fortran - 将逻辑变量传递给 Fortran 子例程
- python - 按列对 2d numpy 字符串/浮点数组进行排序
- python - 我的 pip 显示无效版本选项错误
- java - EntityManager 没有持久性提供程序,尽管我导入了 hibernate-core 包