Mysql5.7版本实现窗口函数

SELECT a.sid,a.score,
-- a.cid , 不能有该字段,添加该字段,不能分组排序,是全局排序
( @rank := CASE WHEN @cid = a.cid THEN @rank + 1 ELSE 1 END ) AS row_num,    
( @cid := a.cid ) AS cid2    
-- 字段中必须有字段逻辑 ( @cid := a.cid ),否则不能实现分组排序;且分组字段必须在排序字段后面,否则是针对所有数据排序
FROM ( select *
        From
        (
        -- sid :学升;cid :课程编码; score :成绩
        select '小明' sid,'cid-01' cid, 90 score union all 
        select '小明' sid,'cid-02' cid, 67 score union all
        select '小明' sid,'cid-03' cid, 88 score union all
        select '张三' sid,'cid-01' cid, 78 score union all
        select '张三' sid,'cid-02' cid, 66 score union all
        select '张三' sid,'cid-03' cid, 55 score union all
        select '李四' sid,'cid-01' cid, 99 score union all
        select '李四' sid,'cid-02' cid, 94 score union all
        select '李四' sid,'cid-03' cid, 90 score 
        )t
        ORDER BY cid, sid DESC
        ) as a
INNER JOIN ( SELECT @rank := 0, @cid := 0 ) AS b ON 1 =1;

执行结果:

sid score row_num cid2
李四 99 1.0 cid-01
张三 78 2.0 cid-01
小明 90 3.0 cid-01
李四 94 1.0 cid-02
张三 66 2.0 cid-02
小明 67 3.0 cid-02
李四 90 1.0 cid-03
张三 55 2.0 cid-03
小明 88 3.0 cid-03

相关推荐

  1. Mysql5.7版本实现窗口函数

    2023-12-29 03:12:02       51 阅读
  2. MySQLMySQL版本8+ 窗口函数 PERCENT_RANK 的使用

    2023-12-29 03:12:02       53 阅读
  3. MySQL 窗口函数详解

    2023-12-29 03:12:02       49 阅读
  4. MYSQL窗口函数详解和实战(内含示例)

    2023-12-29 03:12:02       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-29 03:12:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-29 03:12:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-29 03:12:02       82 阅读
  4. Python语言-面向对象

    2023-12-29 03:12:02       91 阅读

热门阅读

  1. 基于SpringBoot的考编论坛网站

    2023-12-29 03:12:02       64 阅读
  2. python mysql登录注册

    2023-12-29 03:12:02       65 阅读
  3. C++如何获取随机浮点数

    2023-12-29 03:12:02       57 阅读
  4. LeetCode //C - 1732. Find the Highest Altitude

    2023-12-29 03:12:02       51 阅读