• 1308. 不同性别每日分数总计


    SQL架构

    表: Scores

    +---------------+---------+
    | Column Name   | Type    |
    +---------------+---------+
    | player_name   | varchar |
    | gender        | varchar |
    | day           | date    |
    | score_points  | int     |
    +---------------+---------+
    (gender, day)是该表的主键
    一场比赛是在女队和男队之间举行的
    该表的每一行表示一个名叫 (player_name) 性别为 (gender) 的参赛者在某一天获得了 (score_points) 的分数
    如果参赛者是女性,那么 gender 列为 'F',如果参赛者是男性,那么 gender 列为 'M'
    

    写一条SQL语句查询每种性别在每一天的总分。

    返回按 gender 和 day 对查询结果 升序排序 的结果。

    查询结果格式的示例如下。

    示例 1:

    输入:
    Scores表:
    +-------------+--------+------------+--------------+
    | player_name | gender | day        | score_points |
    +-------------+--------+------------+--------------+
    | Aron        | F      | 2020-01-01 | 17           |
    | Alice       | F      | 2020-01-07 | 23           |
    | Bajrang     | M      | 2020-01-07 | 7            |
    | Khali       | M      | 2019-12-25 | 11           |
    | Slaman      | M      | 2019-12-30 | 13           |
    | Joe         | M      | 2019-12-31 | 3            |
    | Jose        | M      | 2019-12-18 | 2            |
    | Priya       | F      | 2019-12-31 | 23           |
    | Priyanka    | F      | 2019-12-30 | 17           |
    +-------------+--------+------------+--------------+
    输出:
    +--------+------------+-------+
    | gender | day        | total |
    +--------+------------+-------+
    | F      | 2019-12-30 | 17    |
    | F      | 2019-12-31 | 40    |
    | F      | 2020-01-01 | 57    |
    | F      | 2020-01-07 | 80    |
    | M      | 2019-12-18 | 2     |
    | M      | 2019-12-25 | 13    |
    | M      | 2019-12-30 | 26    |
    | M      | 2019-12-31 | 29    |
    | M      | 2020-01-07 | 36    |
    +--------+------------+-------+
    解释:
    女性队伍:
    第一天是 2019-12-30,Priyanka 获得 17 分,队伍的总分是 17 分
    第二天是 2019-12-31, Priya 获得 23 分,队伍的总分是 40 分
    第三天是 2020-01-01, Aron 获得 17 分,队伍的总分是 57 分
    第四天是 2020-01-07, Alice 获得 23 分,队伍的总分是 80 分
    男性队伍:
    第一天是 2019-12-18, Jose 获得 2 分,队伍的总分是 2 分
    第二天是 2019-12-25, Khali 获得 11 分,队伍的总分是 13 分
    第三天是 2019-12-30, Slaman 获得 13 分,队伍的总分是 26 分
    第四天是 2019-12-31, Joe 获得 3 分,队伍的总分是 29 分
    第五天是 2020-01-07, Bajrang 获得 7 分,队伍的总分是 36 分

    开窗:

    1. select
    2. gender,day,sum(ifnull(score_points,0)) over(partition by gender order by day rows between unbounded preceding and current row) total
    3. from
    4. Scores
    5. order by
    6. gender,day

    不开窗:

    1. SELECT
    2. t1.gender,
    3. t1.day,
    4. (
    5. SELECT
    6. SUM(t2.score_points)
    7. FROM
    8. Scores AS t2
    9. WHERE t1.day >= t2.day
    10. AND t1.gender = t2.gender
    11. ) AS 'total'
    12. FROM
    13. Scores AS t1
    14. ORDER BY gender, day

  • 相关阅读:
    vue-cli2 与vue-cli3,vue2与vue3 初始化项目,本地vue项目,详细解析区别(2024-04-19)
    Vue的过滤器(filter)
    Promise
    bean实例化
    浅谈前端自定义VectorGrid矢量瓦片样式
    RocketMQ 数据持久化、高可用、高性能、读写原理、扩容总结
    Ubuntu 放弃了战斗向微软投降
    从一个程序员的角度看东方甄选“小作文”事件
    Goroutine和协程的区别
    协程简单上手(线程切换)
  • 原文地址:https://blog.csdn.net/m0_69157845/article/details/125464392