【发布时间】:2022-07-11 11:00:46
【问题描述】:
我正在尝试优化以下查询,以帮助获取所有过去三个月内在过去三个月内每月订单频率为 +4 的客户。
| Customer ID | Feb | Mar | Apr |
|---|---|---|---|
| 0001 | 4 | 5 | 6 |
| 0002 | 3 | 2 | 4 |
| 0003 | 4 | 2 | 3 |
在上表中,客户 ID 为 0001 的客户只应被选中,因为他在一个月内始终有 4 个或更多订单。
下面是我写的一个查询,它吸引了过去 90 天内平均购买频率为 4 次的所有客户,但不考虑过去三个月有 4 次或更多的一致购买次数。
查询:
SELECT distinct lines.customer_id Customer_ID, (COUNT(lines.order_id)/90) PurchaseFrequency
from fct_customer_order_lines lines
LEFT JOIN product_table product
ON lines.entity_id= product.entity_id
AND lines.vendor_id= product.vendor_id
WHERE LOWER(product.country_code)= "IN"
AND lines.date >= DATE_SUB(CURRENT_DATE() , INTERVAL 90 DAY )
AND lines.date < CURRENT_DATE()
GROUP BY Customer_ID
HAVING PurchaseFrequency >=4;
我尝试使用窗口函数,但不确定是否需要在这种情况下使用。
【问题讨论】:
-
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
标签: sql google-bigquery frequency orders