KingbaseES DENSE_RANK 函数用法

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 行记录)
posted @   KINGBASE研究院  阅读(93)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示