【SQL进阶】Day05:窗口函数

本文探讨了如何运用SQL查询技术,包括专用窗口函数,来分析考试成绩排名、答题速度差异、连续作答时间窗口、未完成试卷统计和增长率等,帮助理解用户的学习行为和完成情况。

〇、概述

一、专用窗口函数

1、每类试卷得分前3名

 

自己写出来的部分

SELECT
    tag AS tid,
    uid AS uid,
    Rank AS ranking -- 如何确定排名
FROM examination_info ei
JOIN exam_record er
USING(exam_id)
GROUP BY tid
ORDER BY MIN(score) DESC,uid ASC

答案:

select u.tag tid,u.uid,u.ranking FROM
    (SELECT *,
        row_number() over (partition by t.tag order by t.max_score desc,t.min_score desc,t.uid desc) ranking 
    FROM
        (SELECT i.tag,r.uid,max(r.score) max_score,min(r.score) min_score
        from examination_info i
        join exam_record r
        on i.exam_id=r.exam_id
        where r.score is not null
        group by i.tag,r.uid
        ) t
    ) u
WHERE u.ranking<=3

SELECT tag,uid,ranking
FROM(
    SELECT
        tag,
        uid,
        row_number() OVER (PARTITION BY tag 
                           ORDER BY tag, MAX(score) DESC, MIN(score) DESC, uid DESC)
                     AS ranking
    FROM exam_record
    JOIN examination_info USING(exam_id)
    GROUP BY tag,uid
    ) new_examrecord
WHERE ranking < 4

学到:ROW_NUMBER() OVER( PATITION BY A ORDER BYB)

2、第二快/慢用时之差大于试卷时长一半的试卷

 自己的想法

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值