如何在Vertica中计算买家购买与退货的日期天数差
Vertica计算买家购买与退货的天数差
假设你的表名为return_buyers,用下面的SQL就能算出每个买家购买和退货的天数差:
SELECT buyer_id, DATEDIFF('day', MAX(CASE WHEN event_name = 'purchase' THEN event_value::DATE END), MAX(CASE WHEN event_name = 'return' THEN event_value::DATE END) ) AS difference_in_days FROM return_buyers GROUP BY buyer_id;
要点说明:
- 用
CASE语句分别提取每个买家的购买、退货日期,MAX聚合用来确保每个买家只取到唯一的日期值(因为每个买家各有一条购买和退货记录) - 如果
event_value字段本身就是DATE类型,不用加::DATE转换;如果是字符串类型,必须转成DATE才能计算日期差 DATEDIFF('day', 起始日期, 结束日期)是Vertica里计算两个日期天数差的函数
另外注意:你给出的示例中天数计算有误,实际2022-08-23到2022-10-23是61天,2022-10-02到2022-11-16是45天,执行上面的SQL会得到正确的天数结果。
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

