當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


PostgreSQL PERCENT_RANK用法及代碼示例

在PostgreSQL中PERCENT_RANK()函數用於計算一組值中某個值的相對等級。PERCENT_RANK()函數類似於CUME_DIST()函數。 PERCENT_RANK()函數評估值在一組值中的相對位置。

下麵說明了PERCENT_RANK()函數的語法:

用法:
PERCENT_RANK() OVER (
    [PARTITION BY partition_expression, ... ]
    ORDER BY sort_expression [ASC | DESC], ...
)

讓我們分析以上語法:

  • 這個分區依據子句將行分為多個分區,PERCENT_RANK()函數已應用。
  • 這個排序子句指定應用該函數的每個分區中的行順序。
  • 這個PERCENT_RANK()函數返回大於0且小於或等於1的結果。

範例1:

首先,創建兩個名為product和product_groups的表:



CREATE TABLE product_groups (
    group_id serial PRIMARY KEY,
    group_name VARCHAR (255) NOT NULL
);

CREATE TABLE products (
    product_id serial PRIMARY KEY,
    product_name VARCHAR (255) NOT NULL,
    price DECIMAL (11, 2),
    group_id INT NOT NULL,
    FOREIGN KEY (group_id) REFERENCES product_groups (group_id)
);

現在向其中添加一些數據:

INSERT INTO product_groups (group_name)
VALUES
    ('Smartphone'),
    ('Laptop'),
    ('Tablet');

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);

以下語句使用PERCENT_RANK()函數用於計算2019年每位員工的銷售百分比:

SELECT 
    name,
    amount,
    PERCENT_RANK() OVER (
        ORDER BY amount
    )
FROM 
    sales_stats
WHERE 
    year = 2019;

輸出:

範例2:

以下聲明使用PERCENT_RANK()函數計算銷售員工在2018年和2019年的銷售額百分比:

SELECT 
    name,
    amount,
    PERCENT_RANK() OVER (
        PARTITION BY year
        ORDER BY amount
    )
FROM 
    sales_stats;

輸出:

相關用法


注:本文由純淨天空篩選整理自RajuKumar19大神的英文原創作品 PostgreSQL – PERCENT_RANK Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。