![](/img/trans.png)
[英]compute time difference between rows and conditional group by using PostgreSQL
[英]Month Difference between rows by group in PostgreSQL
我有使用PostgreSQL的數據,看起來像這樣
customer name order_id order_date
John A001 1-Jan-2017
John A002 1-Feb-2017
John A003 1-Apr-2017
Smith A004 1-Dec-2016
Smith A005 1-Feb-2017
Jane A006 1-Mar-2017
Dave A007 1-Feb-2017
Dave A008 1-Feb-2017
Dave A009 1-Feb-2017
我試圖在另一列中獲得回購月份之間的差額。 像這樣
customer name order_id order_date month_diff
John A001 1-Jan-2017 null
John A002 1-Feb-2017 1
John A003 1-Apr-2017 2
Smith A004 1-Dec-2016 null
Smith A005 1-Feb-2017 3
Jane A006 1-Mar-2017 null
Dave A007 1-Feb-2017 null
Dave A008 1-Feb-2017 0
Dave A009 1-Feb-2017 0
任何建議將不勝感激。 我是PostgreSQL的新手。 先感謝您
這可以使用窗口函數輕松完成(假設order_date
正確定義為DATE
)
select customer_name,
order_id,
order_date,
order_date - lag(order_date) over (partition by customer_name order by order_date) as diff
from order_table
order by customer_name, order_date;
請注意,如果order_date
是date
,則差異結果以天為單位。
嘗試 first_value()
:
select
customer_name, order_id, order_date
, order_date - first_value(order_date) over (partition by customer_name order by order_id) as month_diff
from tname;
嘗試這個:
select
t.customer,
t.order_id,
t.order_date,
(select extract(MONTH from t.order_date) - extract(MONTH from tt.order_date)
from your_table tt
where tt.order_id < t.order_id
order by tt.order_id desc limit 1
)
from your_table t
order by t.order_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.