基于SQL中的另外两个表创建一个新表。第一个表USER有一个变量
user_id | purchase_time
-----------------------------
Marta | 10/20/2019
Steve | 10/21/2019
Michael | 10/18/2019
COUPON表有两个变量
user_id | coupon_id | coupon_time
-------------------------------------------
Marta | 12345 | 10/21/2019
Steve | 12356 | 10/18/2019
Marta | 12365 | 10/01/2019
Michael | |
问题是创建一个新表USER_SUMMARY。计算purchase_time之前和之后收到的优惠券的数量,并计算收到的优惠券的总数。如果在puchase_time之后未收到优惠券,则计数为0。最终创建的表格应如下所示:
user_id | purchase_before_coupon | purchase_after coupon | total_coupons
--------------------------------------------------------------------------------------
Marta | 1 | 1 | 2
Steve | 0 | 1 | 1
Michael | 0 | 0 | 0
如果用Python或R完成,应该不会很复杂,但是我不太了解如何使用SQL语法来实现。预先感谢!
答案 0 :(得分:1)
您可以使用CREATE ... SELECT
查询来生成user_summary
表。 SELECT
查询统计每个用户在每个优惠券之前或之后进行的购买次数,并计算其优惠券的总数:
CREATE TABLE user_summary AS
SELECT u.user_id,
COALESCE(SUM(u.purchase_time < c.coupon_time), 0) AS purchase_before,
COALESCE(SUM(u.purchase_time >= c.coupon_time), 0) AS purchase_after,
COUNT(c.coupon_id) AS total
FROM user u
LEFT JOIN coupon c ON c.user_id = u.user_id
GROUP BY u.user_id
运行此查询后的输出(SELECT * FROM user_summary
):
user_id purchase_before purchase_after total
Marta 1 1 2
Michael 0 0 0
Steve 0 1 1