【问题标题】:Create a new table based on another two tables in MYSQL基于MYSQL中的另外两张表创建一个新表
【发布时间】:2020-10-30 02:51:35
【问题描述】:

在 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前后收到的coupon数量,统计收到的coupon总数。如果在 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 语法来完成。提前致谢!

【问题讨论】:

    标签: mysql sql compare create-table


    【解决方案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
    

    Demo on db-fiddle

    【讨论】:

    • 谢谢。这正是我想要的1
    • @user1047 不用担心 - 我很高兴能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    相关资源
    最近更新 更多