多个日期之间的差异
Difference between multiple dates
我在一个包含多个供应商的多个订单的数据库中工作。现在我想知道订单 1 和订单 2、订单 2 和订单 3、订单 3 和订单 4 之间的天数差异等等。对于每个供应商自己。我需要它根据订单之间的天数为每个供应商生成标准偏差。
希望有人能帮忙..
您描述的是 lag()
聚合:
select supplier,
stddev(orderdate - prev_orderdate) as std_orderdate
from (select t.*,
lag(orderdate) over (partition by supplier order by orderdate) as prev_orderdate
from t
) t
group by supplier;
您通常会使用 window 函数 lag()
和日期算法。
假设 table orders
的数据结构如下:
order_id int primary key
supplier_id int
order_date date
你会去:
select
i.*,
order_date
- lag(order_date) over(partition by supplier_id order by order_date) date_diff
from orders o
这会为您提供每个订单与同一供应商的上一个订单的天数差异(如果这是供应商的第一个订单,则为 null
)。
然后您可以使用聚合计算标准偏差:
select supplier_id, stddev(date_diff)
from (
select
o.*,
order_date
- lag(order_date) over(partition by supplier_id order by order_date) date_diff
from orders o
) x
group by supplier_id
我在一个包含多个供应商的多个订单的数据库中工作。现在我想知道订单 1 和订单 2、订单 2 和订单 3、订单 3 和订单 4 之间的天数差异等等。对于每个供应商自己。我需要它根据订单之间的天数为每个供应商生成标准偏差。
希望有人能帮忙..
您描述的是 lag()
聚合:
select supplier,
stddev(orderdate - prev_orderdate) as std_orderdate
from (select t.*,
lag(orderdate) over (partition by supplier order by orderdate) as prev_orderdate
from t
) t
group by supplier;
您通常会使用 window 函数 lag()
和日期算法。
假设 table orders
的数据结构如下:
order_id int primary key
supplier_id int
order_date date
你会去:
select
i.*,
order_date
- lag(order_date) over(partition by supplier_id order by order_date) date_diff
from orders o
这会为您提供每个订单与同一供应商的上一个订单的天数差异(如果这是供应商的第一个订单,则为 null
)。
然后您可以使用聚合计算标准偏差:
select supplier_id, stddev(date_diff)
from (
select
o.*,
order_date
- lag(order_date) over(partition by supplier_id order by order_date) date_diff
from orders o
) x
group by supplier_id