如何对比前一天的数据?
How to compare data with the previous day?
我想创建一个 table 每天只显示昨天未使用的 ID
例如,我有一个 table id 和 date
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')
我想创建一个 table 每天只显示昨天未使用的 ID 例如,我有一个 table id 和 date
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')