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

SQL统计用户题目组合下低分记录到最新记录的间隔行数

核心需求
  • 按「用户+题目」维度统计,返回自最后一条得分≤250的低分记录出现后,到该用户对应题目最新答题记录之间经过的答题迭代行数。
现有实现

目前已编写一版执行效率较高的SQL,可输出部分预期字段,但尚未完成行数统计的需求,代码如下:

SELECT
    uq1.UserID,
    uq1.QuestionID,
    r.LastAttempt,
    r.Score,
    r.DateSeen,
    s.LastBad,
    s.Score AS ScoreUnder,
    s.DateSeen AS DateScoreUnder
FROM
    users_questions uq1
LEFT JOIN (
    SELECT
        uq2.QuestionID,
        uq2.UserID,
        MAX(UsersQuestionsID) LastAttempt,
        uq2.Score,
        uq2.DateSeen
    FROM
        users_questions uq2
    GROUP BY
        uq2.UserID,
        uq2.QuestionID
) AS r ON r.QuestionID = uq1.QuestionID AND r.UserID = uq1.UserID
LEFT JOIN (
    SELECT
        uq3.QuestionID,
        uq3.UserID,
        MAX(UsersQuestionsID) LastBad,
        uq3.Score,
        uq3.DateSeen
    FROM
        users_questions uq3
    WHERE
        uq3.Score <= 250
    GROUP BY
        uq3.UserID,
        uq3.QuestionID
) AS s ON s.QuestionID = uq1.QuestionID AND s.UserID = uq1.UserID
GROUP BY
    uq1.UserID,
    uq1.QuestionID

现有代码已能输出每个用户每道题的最新答题记录、最后一条低分答题记录的相关信息,缺少的统计逻辑为:计算每个「用户+题目」组合下,最后一条低分记录到最新记录之间的答题行数。

测试数据

测试用users_questions表样例数据如下:

UsersQuestionsIDScoreDateSeenUserIDQuestionID
18772022-06-25 19:51:181498
27652022-06-25 15:52:421499
33452022-06-25 15:54:221499
47542022-06-25 15:54:2214107
52222022-06-25 16:11:401373
65252022-06-25 16:11:401355
7232022-06-25 16:11:4013130
88882022-06-25 16:11:4013104
92342022-07-01 12:41:441494
105642022-07-01 12:41:4414106
1102022-07-01 13:59:371499
122672022-07-01 16:57:401499
133452022-07-02 15:17:031399
14492022-07-02 17:44:191499
152222022-07-02 18:10:171499
16492022-07-02 18:10:431494
1710002022-07-02 18:11:1814106
1802022-07-06 14:18:511494

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:54:24