【发布时间】:2021-12-05 01:52:51
【问题描述】:
当我意识到我在第 0 年收到错误的订单数量时,我在第一次购买和第二次购买之间进行了DATE_DIFF。在 2020 年 10 月和 2021 年 1 月进行了第二次订单的客户最终进入垃圾箱对于 1 年后完成第二个订单的客户 - 新订单的年份已更改,但两个订单之间只有几个月的时间。
我试图用天数而不是年份来做一个DATE_DIFF,并将它除以 365,但这给了我十进制数字作为年份。下面是我在 DataStudio 中使用的查询,我在那里按 calc_yearsBetweenFirstTwoOrders 对订单数进行分组。有谁知道如何处理这个问题?
DATE_DIFF(a.casted_order_datetime, a.first_customer_purchase_date, YEAR) AS yearsBetweenFirstTwoOrders,
DATE_DIFF(a.casted_order_datetime, a.first_customer_purchase_date, DAY) / 365 AS calc_yearsBetweenFirstTwoOrders,
DATE_DIFF(a.casted_order_datetime, a.first_customer_purchase_date, DAY) AS daysBetweenFirstTwoOrders,
DATE_DIFF(a.casted_order_datetime, a.first_customer_purchase_date, WEEK) AS weeksBetweenFirstTwoOrders,
DATE_DIFF(a.casted_order_datetime, a.first_customer_purchase_date, MONTH) AS monthsBetweenFirstTwoOrders,
CASE WHEN (DATE_DIFF(a.casted_order_datetime, a.first_customer_purchase_date, DAY) = 0) THEN 'newCustomer'
WHEN (DATE_DIFF(a.casted_order_datetime, a.first_customer_purchase_date, DAY) > 0) THEN 'returningCustomer'
ELSE NULL END AS customerSegment,
CASE WHEN (article_price BETWEEN 0 AND 1000) THEN 'price 0-1000'
WHEN (article_price BETWEEN 1000 and 2000) THEN 'price 1000-2000'
WHEN (article_price BETWEEN 2000 and 3000) THEN 'price 2000-3000'
WHEN (article_price BETWEEN 3000 and 4000) THEN 'price 3000-4000'
WHEN (article_price BETWEEN 4000 and 5000) THEN 'price 4000-5000'
WHEN (article_price BETWEEN 5000 and 6000) THEN 'price 5000-6000'
ELSE 'price > 6000' END AS article_price_binned,
from (
SELECT
DISTINCT order_id,
first_customer_purchase_date,
CAST(TIMESTAMP(order_datetime)as DATE) as casted_order_datetime,
order_datetime as order_datetime,
customer_id,
orderrow_id,
article_title,
main_image,
article_price,
category_level_1,
category_level_2,
category_level_3,
merchant,
traffic_source,
is_return,
Order_Product_Age_Days,
order_shipping_time_max,
Quantity,
ROW_NUMBER() OVER ( PARTITION BY customer_id ORDER BY order_datetime desc ) AS RN
FROM `xxxx-xxxx-xxxx.sandbox.xxxxxx`
)A
WHERE order_datetime BETWEEN PARSE_TIMESTAMP('%Y%m%d', @DS_START_DATE)
AND PARSE_TIMESTAMP('%Y%m%d', @DS_END_DATE)
【问题讨论】:
标签: sql time google-bigquery datediff