📜  PostgreSQL – RANK函数

📅  最后修改于: 2022-05-13 01:57:15.191000             🧑  作者: Mango

PostgreSQL – RANK函数

PostgreSQL 中 RANK()函数用于为指定分区内的查询结果集的每一行分配一个排名。每个分区中第一行的排名为 1。

下面说明了 RANK()函数的语法:

Syntax:
RANK() OVER (
    [PARTITION BY partition_expression, ... ]
    ORDER BY sort_expression [ASC | DESC], ...
)

我们来分析一下上面的语法:

  • 首先,PARTITION BY 子句在应用 RANK()函数的查询结果中创建分区。
  • ORDER BY 子句设置查询结果的显示顺序。

示例 1:

首先,创建一个名为Rankings 的表,其中包含一列:



CREATE TABLE Rankings(
    g VARCHAR(100)
);

现在向其中添加一些数据:

INSERT INTO Rankings(g)
VALUES('Ram'), ('Ravi'), ('Bhola'), ('Bhagat'), ('Bhushan'), ('Chintu'), ('Isha');

现在,使用RANK()函数将排名分配给排名结果集中的行

SELECT
    g,
    RANK () OVER ( 
        ORDER BY g 
    ) rank
FROM
    Rankings;

输出:

示例 2:

首先,创建两个名为 Mammals 和 Animal_groups 的表:

CREATE TABLE Animal_groups (
    animal_id serial PRIMARY KEY,
    animal_name VARCHAR (255) NOT NULL
);

CREATE TABLE Mammals (
    mammal_id serial PRIMARY KEY,
    mammal_name VARCHAR (255) NOT NULL,
    lifespan DECIMAL (11, 2),
    animal_id INT NOT NULL,
    FOREIGN KEY (animal_id) REFERENCES Animal_groups (animal_id)
);

现在向其中添加一些数据:

INSERT INTO Animal_groups (animal_name)
VALUES
    ('Terrestrial'),
    ('Aquatic'),
    ('Winged');

INSERT INTO Mammals(mammal_name, animal_id, lifespan)
VALUES
    ('Cow', 1, 10),
    ('Dog', 1, 7),
    ('Ox', 1, 13),
    ('Wolf', 1, 11),
    ('Blue Whale', 2, 80),
    ('Dolphin', 2, 5),
    ('Sea Horse', 2, 3),
    ('Octopus', 2, 8),
    ('Bat', 3, 4),
    ('Flying Squirrels', 3, 1),
    ('Petaurus', 3, 2);

以下语句使用RANK()函数按每个哺乳动物的寿命为其分配等级:

SELECT
    mammal_id,
    mammal_name,
    lifespan,
    RANK () OVER ( 
        ORDER BY lifespan DESC
    ) long_life 
FROM
    Mammals;

输出: