Mysql5.7版本实现窗口函数
2023-12-21 18:39:32
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 |
文章来源:https://blog.csdn.net/wangshengfeng1986211/article/details/135137300
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!