You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于时间的游戏最高分进阶SQLite查询需求

问题

给定存储游戏得分与对应时间戳的表格,需要编写SQLite查询语句,检索出每次达成时为历史最高分的得分及其对应时间(即最高分进阶记录)。要求仅返回指定日期内的这类记录。

参考样例数据(按时间戳排序,带*的为历史最高分记录):

得分时间戳备注
5*00:12 2022-08-09
6*01:15 2022-08-09
201:30 2022-08-09逊于当前最高分6,无*
10*02:01 2022-08-09
703:45 2022-08-09逊于当前最高分10
12*03:50 2022-08-09
1*00:05 2022-08-10注意日期不同!
6*01:01 2022-08-10

例如查询2022-08-09时,预期输出:

最佳得分时间戳
500:12
601:15
1002:01
1203:50
解决方案

假设表格名为game_scores,包含字段score(得分,整数类型)、timestamp(时间戳,字符串或DATETIME类型)。以下是SQLite方言的查询语句:

SELECT 
    score AS 最佳得分,
    strftime('%H:%M', timestamp) AS 时间戳
FROM (
    SELECT 
        score,
        timestamp,
        MAX(score) OVER (ORDER BY timestamp ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_max
    FROM game_scores
    WHERE DATE(timestamp) = '2022-08-09'
) AS subquery
WHERE score = running_max
ORDER BY timestamp;

语句说明

  1. 内层子查询使用窗口函数MAX() OVER (...)计算截止到当前记录的历史最高分(running_max),按时间戳顺序遍历指定日期的所有记录。
  2. 外层筛选出得分等于当前历史最高分的记录,这些就是每次刷新历史最高的进阶记录。
  3. 使用strftime('%H:%M', timestamp)提取时间戳中的时分部分,匹配示例输出格式;若需保留完整日期,可直接使用timestamp字段。
  4. 修改DATE(timestamp) = '指定日期'中的日期值,即可查询其他日期的进阶记录。

适配注意

如果你的timestamp字段存储格式与示例不同,需要调整DATE()和strftime()的参数以匹配实际格式,确保日期筛选和时间提取逻辑正确。

内容的提问来源于stack exchange,提问作者sil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:51:13