zoukankan      html  css  js  c++  java
  • [LeetCode]534. 游戏玩法分析 III(Mysql)

    题目

    Table: Activity
    
    +--------------+---------+
    | Column Name  | Type    |
    +--------------+---------+
    | player_id    | int     |
    | device_id    | int     |
    | event_date   | date    |
    | games_played | int     |
    +--------------+---------+
    (player_id,event_date)是此表的主键。
    这张表显示了某些游戏的玩家的活动情况。
    每一行是一个玩家的记录,他在某一天使用某个设备注销之前登录并玩了很多游戏(可能是 0 )。
     
    
    编写一个 SQL 查询,同时报告每组玩家和日期,以及玩家到目前为止玩了多少游戏。也就是说,在此日期之前玩家所玩的游戏总数。详细情况请查看示例。
    
    查询结果格式如下所示:
    
    Activity table:
    +-----------+-----------+------------+--------------+
    | player_id | device_id | event_date | games_played |
    +-----------+-----------+------------+--------------+
    | 1         | 2         | 2016-03-01 | 5            |
    | 1         | 2         | 2016-05-02 | 6            |
    | 1         | 3         | 2017-06-25 | 1            |
    | 3         | 1         | 2016-03-02 | 0            |
    | 3         | 4         | 2018-07-03 | 5            |
    +-----------+-----------+------------+--------------+
    
    Result table:
    +-----------+------------+---------------------+
    | player_id | event_date | games_played_so_far |
    +-----------+------------+---------------------+
    | 1         | 2016-03-01 | 5                   |
    | 1         | 2016-05-02 | 11                  |
    | 1         | 2017-06-25 | 12                  |
    | 3         | 2016-03-02 | 0                   |
    | 3         | 2018-07-03 | 5                   |
    +-----------+------------+---------------------+
    对于 ID 为 1 的玩家,2016-05-02 共玩了 5+6=11 个游戏,2017-06-25 共玩了 5+6+1=12 个游戏。
    对于 ID 为 3 的玩家,2018-07-03 共玩了 0+5=5 个游戏。
    请注意,对于每个玩家,我们只关心玩家的登录日期。
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/game-play-analysis-iii
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
    

    题解

    累加型题目,可以考虑使用笛卡尔积进行自表连接,连接后的表进行where条件进行筛选、group by分组操作。

    代码

    # Write your MySQL query statement below
    select a1.player_id,a1.event_date,sum(a2.games_played) as games_played_so_far
    from activity a1,activity a2
    where a1.player_id = a2.player_id
    and a1.event_date >= a2.event_date
    group by a1.player_id,a1.event_date
    
  • 相关阅读:
    查找 Search
    [HEOI2016/TJOI2016]排序
    [SDOI2011\]染色
    [构造题选讲]
    [LNOI2014]LCA
    [POI2013]LUKTriumphal arch
    java取得某月最后一天
    设置上网代理服务器
    Richfaces改变我的编程方式
    Richfaces Style
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/12976544.html
Copyright © 2011-2022 走看看