DENSE_RANK()函数用于为结果集分区内的每一行分配一个排名,排名值之间没有差距,函数为结果集的每个分区中的每一行分配一个等级。

与 RANK() 函数不同的是,DENSE_RANK() 函数总是返回连续的排名值。对于每个分区,DENSE_RANK() 函数为具有相同值的行返回相同的排名。

语法

DENSE_RANK() OVER (
[PARTITION BY partition_expression, ... ]
ORDER BY sort_expression [ASC | DESC], ...
)

DENSE_RANK() 函数应用于PARTITION BY子句定义的每个分区中的每一行,按ORDER BY子句指定的排序顺序。跨越分区边界时,它会重置排名。PARTITION BY 子句是可选的。如果跳过它,DENSE_RANK() 函数会将整个结果集视为单个分区。

示例

构造数据:
CREATE TABLE products (
product_id serial PRIMARY KEY,
product_name VARCHAR (255) NOT NULL,
price DECIMAL (11, 2),
group_id INT NOT NULL
); INSERT INTO products (product_name, group_id, price)
VALUES
('Microsoft Lumia', 1, 200),
('HTC One', 1, 400),
('Nexus', 1, 500),
('iPhone', 1, 900),
('HP Elite', 2, 1200),
('Lenovo Thinkpad', 2, 700),
('Sony VAIO', 2, 700),
('Dell Vostro', 2, 800),
('iPad', 3, 700),
('Kindle Fire', 3, 150),
('Samsung Galaxy Tab', 3, 200); 使用DENSE_RANK()按标价对产品进行排名:
test=# SELECT
test-# product_id,
test-# product_name,
test-# price,
test-# DENSE_RANK () OVER (
test(# ORDER BY price DESC
test(# ) price_rank
test-# FROM products;
product_id | product_name | price | price_rank
------------+--------------------+---------+------------
5 | HP Elite | 1200.00 | 1
4 | iPhone | 900.00 | 2
8 | Dell Vostro | 800.00 | 3
6 | Lenovo Thinkpad | 700.00 | 4
7 | Sony VAIO | 700.00 | 4
9 | iPad | 700.00 | 4
3 | Nexus | 500.00 | 5
2 | HTC One | 400.00 | 6
11 | Samsung Galaxy Tab | 200.00 | 7
1 | Microsoft Lumia | 200.00 | 7
10 | Kindle Fire | 150.00 | 8
(11 行记录)

最新文章

  1. ASP.NET Core 中文文档 第四章 MVC(2.1)模型绑定
  2. Unity3D 解决用Unity导出的Android工程在6.0及以上设备会弹出一串权限对话框的问题
  3. 4412开发板搭建Uboot、Kernel和Android4.0的编译环境方法
  4. android 蓝牙4.0多通道
  5. python描述符descriptor(二)
  6. .net图片压缩
  7. 驱动调试-根据oops定位错误代码行
  8. CSS height:100%无效
  9. CTFcracktools——非常实用的CTF解密工具
  10. ECMAScript 6 学习(一)generator函数
  11. springboot 启动脚本
  12. scala 基础
  13. The Microservices Workflow Automation Cheat Sheet
  14. python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)
  15. Java枚举类的serialVersionUID
  16. Plupload使用API
  17. FBXImport
  18. Sublime Text Emmet插件 : 生成html,css 快捷键
  19. LeetCode Longest Substring Without Repeating Characters 最长不重复子串
  20. python的unittest单元测试框架断言整理汇总

热门文章

  1. 关于使用koa实现线上 https服务
  2. 揭开Vue异步组件的神秘面纱
  3. java基础知识面试总结-部分
  4. ​2005/2010/2015-2021年全国兴趣点POI数据
  5. JDBC:Statement问题
  6. .NET Core 实现后台任务(定时任务)IHostedService(一)
  7. .NET Core 实现后台任务(定时任务)Longbow.Tasks 组件(三)
  8. else语句
  9. 基于yum安装CDH集群
  10. Thingsboard硬网关金鸽BL102采集三菱PLC步骤