如何与前一天比较数据?

用户458

我想创建一个表,每天只显示昨天没有使用的表 例如,我有一个带有 id 和日期的表

id  date
1    2021-09-01
2    2021-09-02
10   2021-09-02
14   2021-09-02
20   2021-09-02
3    2021-09-03
20   2021-09-03
14   2021-09-03
4    2021-09-04
10   2021-09-04
5    2021-09-05
6    2021-09-06

所以想要的结果是

1    2021-09-01
2    2021-09-02
10   2021-09-02
14   2021-09-02
20   2021-09-02
3    2021-09-03
4    2021-09-04
10   2021-09-04
5    2021-09-05
6    2021-09-06

我正在考虑这样的事情,但不确定它的最优性

select *
into transit
from table t0
join table t on t.date = t0.date - 1 and t.id = t0.id

select * 
from table 
except 
select *
from transit
穆雷尼克

看起来您可以查询使用每个 id 的最小日期:

SELECT   id, MIN(date)
FROM     mytable
GROUP BY id
ORDER BY MIN(date) ASC

编辑:
根据明确的要求,您可以使用not exists运算符查找前一天没有具有相同 id 的对应行的行:

SELECT id, date
FROM   mytable curr
WHERE  NOT EXISTS (SELECT *
                   FROM   mytable prev
                   WHERE  curr.id = prev.id AND
                          curr.date = prev.date + INTERVAL '1 DAY')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章