我需要一些帮助。 我有两张这样的桌子。
表人
gradle help --task <task>
表顺序
p_id | name | registration date
-----------------------------
1 | ABC | 2018-01-01
2 | DEF | 2018-02-02
3 | GHI | 2018-03-01
4 | JKL | 2018-01-02
5 | MNO | 2018-02-01
6 | PQR | 2018-03-02
我需要知道这两个表没有更新的最长时间是多少天。
在SQL中获取结果的最简单查询是什么?
谢谢
更新: 结果应显示order_date和registration_date之间的最长日期差距。由于最长的日期差距是2018-01-08和2018-02-01,因此结果应该返回'24'
答案 0 :(得分:1)
假设当前的PostgreSQL和平均每人的大量订单,这应该是最快的选择之一:
SELECT o.order_date - p.registration_date AS days
FROM person p
CROSS JOIN LATERAL (
SELECT order_date
FROM "order" -- order is a reserved word!
WHRE p_id = p.p_id
ORDER BY 1 DESC -- assuming NOT NULL
LIMIT 1
) o
ORDER BY 1 DESC
LIMIT 1;
需要"orders"(p_id, order_date)
上的索引。
详细说明:
答案 1 :(得分:1)
你似乎想要:
select max(o.order_date - p.registration_date)
from person p join
orders o
on p.p_id = o.p_id;
答案 2 :(得分:1)
select max((date_part('day',age(order_date, "registration date")))) + 1 as dif
from (
select "p_id" ,max(order_date) order_date
from "Order"
group by "p_id"
) T1
left join Person T2 on T1.p_id = T2.p_id
| maxday |
|--------|
| 8 |
答案 3 :(得分:0)
试试这个:
SELECT MAX(DATE_PART('day', now() - '2018-02-15'::TIMESTAMP)) FROM person p
JOIN order o
USING (p_id)