订阅更新

男女队每日累计总分

SQL 实战 123 题 · 第 91 题 中等 约 2 分钟读完

LeetCode 1308 · 分区累计求和

本文目录
  1. 面试怎么回答
  2. 题意
  3. 表结构
  4. 思路
  5. 参考解法
  6. 易错点

面试怎么回答

SUM(score_points) OVER (PARTITION BY gender ORDER BY day) 得到分性别的累计分,外层 ORDER BY gender, day。我会强调窗口里的排序只决定计算顺序,不决定输出顺序。

先把这段讲顺;面试官追问时,再展开下面的原理和细节。

详细讲解

题意

分数表记录每个参赛者的性别、日期和得分,同一性别每天只有一条记录。输出每种性别在每一天截至当天的累计总分,按性别和日期排序。

表结构

  • Scores:player_name、gender、day、score_points;(gender, day) 为主键

思路

按性别分区、按日期排序做 SUM 窗口,就是分组累计。最后按性别、日期排序输出。

参考解法

select gender , day  ,sum( score_points) over(partition by gender order by day)  total
from Scores

易错点

  • 题目要求结果排序,窗口里的 ORDER BY 不保证最终输出顺序,外层要再写 ORDER BY。
刷题进度保存在当前浏览器