如何解决在MYSQL中基于另外两个表创建一个新表
基于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语法来实现。预先感谢!
解决方法
您可以使用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。