根据 MYSQL 中的另外两个 table 创建一个新的 table
Create a new table based on another two tables in MYSQL
根据 SQL 中的另外两个 table 创建一个新的 table。第一个 table USER 有一个变量
user_id | purchase_time
-----------------------------
Marta | 10/20/2019
Steve | 10/21/2019
Michael | 10/18/2019
而 COUPON table 有两个变量
user_id | coupon_id | coupon_time
-------------------------------------------
Marta | 12345 | 10/21/2019
Steve | 12356 | 10/18/2019
Marta | 12365 | 10/01/2019
Michael | |
问题是创建一个新的 table USER_SUMMARY。统计purchase_time前后收到的优惠券数量,统计收到的优惠券总数。如果 puchase_time 后没有收到优惠券,则计为 0。最终创建的 table 应该如下所示:
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 语法中完成。提前致谢!
您可以使用 CREATE ... SELECT
查询生成 user_summary
table。 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
根据 SQL 中的另外两个 table 创建一个新的 table。第一个 table USER 有一个变量
user_id | purchase_time
-----------------------------
Marta | 10/20/2019
Steve | 10/21/2019
Michael | 10/18/2019
而 COUPON table 有两个变量
user_id | coupon_id | coupon_time
-------------------------------------------
Marta | 12345 | 10/21/2019
Steve | 12356 | 10/18/2019
Marta | 12365 | 10/01/2019
Michael | |
问题是创建一个新的 table USER_SUMMARY。统计purchase_time前后收到的优惠券数量,统计收到的优惠券总数。如果 puchase_time 后没有收到优惠券,则计为 0。最终创建的 table 应该如下所示:
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 语法中完成。提前致谢!
您可以使用 CREATE ... SELECT
查询生成 user_summary
table。 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