当前位置: 首页 > news >正文

SQL如何实现动态排名统计 掌握DENSE_RANK排序逻辑

DENSE_RANK() 实现“并列不跳号”排名,与ROW_NUMBER()(强制唯一)和RANK()(并列跳号)本质不同;必须配合OVER(ORDER BY...)使用,不可与GROUP BY混用,需通过CTE或子查询先聚合再排名。为什么 DENSE_RANK() 不是 ORDER BY + ROW_NUMBER()?因为 DENSE_RANK() 的核心是「并列不跳号」,而 ROW_NUMBER() 强制唯一编号,RANK() 并列但会跳号。比如分数 [100, 95, 95, 90],三者结果分别是:[1,2,2,3]、[1,2,3,4]、[1,2,2,4]。实际做销售榜、年级排名时,跳号(RANK)会让第 3 名看起来像“断层”,用户困惑;而 ROW_NUMBER 把并列两人硬拆成第 2 和第 3,违背业务语义。实操建议:DENSE_RANK() 必须配合 OVER (ORDER BY ...),不能单独用排序字段允许多列,如 OVER (ORDER BY dept_id, salary DESC),先按部门再按薪资如果想按组内排名,必须加 PARTITION BY,否则全表统排GROUP BY 后还能用 DENSE_RANK() 吗?不能直接用。一旦用了 GROUP BY,非聚合字段不可引用,而 DENSE_RANK() 是窗口函数,依赖原始行粒度。常见错误是写成:SELECT dept_id, DENSE_RANK() OVER (ORDER BY AVG(salary)) FROM emp GROUP BY dept_id;这会报错:column "salary" must appear in the GROUP BY clause or be used in an aggregate function。根本矛盾在于:窗口函数运行在「分组前」的行集上,聚合后只剩一行,窗口无意义。正确做法分两步:先用子查询或 CTE 算出每组聚合值(如 AVG(salary)),保留 dept_id在外层对这个结果集用 DENSE_RANK() OVER (ORDER BY avg_salary)示例: Felvin AI无代码市场,只需一个提示快速构建应用程序

http://www.jsqmd.com/news/651907/

相关文章:

  • 内容创作者利器:用HY-MT1.5-7B批量翻译多语言文章
  • 钉钉小程序开发避坑指南:从IDE配置到安全域名设置的完整流程
  • 告别单调图表!用C# DevExpress ChartControl打造酷炫数据看板(附甘特图、环形图实战代码)
  • 从“科研苦力”到“高效学者”:好写作AI的期刊论文功能,一次学术写作的“降维打击”
  • AI-Shoujo HF Patch高级配置指南:3步深度优化游戏体验
  • 【Android】今天学点啥1.3.6-啥都能学
  • 猫抓浏览器插件:三步搞定网页视频音频下载的终极指南
  • 2026年蒸汽式香薰机值得买吗?有哪些推荐?
  • Github热榜项目推荐 | 主动拥抱、持续学习
  • 避坑指南:STM32F103 CAN过滤器配置的那些‘坑’(从原理到代码调试)
  • Obsidian Excel插件终极指南:如何在笔记中无缝管理表格数据?
  • Flowable7.x实战指南:构建流程历史轨迹可视化系统
  • OpenProject:开源项目管理利器,让团队协作效率翻倍的完整解决方案
  • 用FPGA给循迹小车写BGM?手把手教你用Xilinx Ego1驱动无源蜂鸣器播放音乐
  • 从扫地机器人到自动驾驶:图解激光SLAM中的图优化技术演进
  • 如何处理SQL存储过程大数据导入_利用数据泵或外部表
  • 从零部署到资源调度:H3C XG310 GPU服务器在K8s云原生环境中的实战集成
  • 腾讯AI产品策划(Agent方向)面试题精选:10道高频考题+答案解析(附PDF)
  • 别再瞎调参数了!OpenCV高斯滤波的sigma和ksize到底怎么设?一个公式搞定
  • 数据孤岛吞噬制造企业利润,iPaaS平台选型指南全面发布
  • SITS2026踩坑实录:从0到日均生成2.7万页详情页,我们重构了5次提示工程框架(含可复用的12维评估矩阵)
  • 深入理解 Transformer 架构:从 Attention 到现代大模型
  • 一次Oracle会话爆满的惊魂时刻:Spring Boot + MyBatis连接池配置救场
  • 终极Windows PDF处理方案:Poppler预编译包完整指南
  • PowerBuilder 9.0 高效安装与常见“Setup is running”问题规避指南
  • git克隆加速方法大全
  • Halcon实战:用两种方法搞定XLD轮廓中线提取(附完整代码)
  • ChatGLM-6B保姆级教程:从零部署双语AI助手详细步骤
  • 5分钟轻松搞定!免费GitHub加速插件完整使用指南
  • 别只仿真了!MQ-2传感器接STM32的硬件避坑指南与代码优化(附Proteus对比)