Función PostgreSQL- DENSE_RANK

En , DENSE_RANK() DENSE_RANK() asigna un rango a cada fila en cada partición de un conjunto de resultados. A diferencia de la función RANK(), la función DENSE_RANK() siempre devuelve valores de rango consecutivos. Para cada partición, la función DENSE_RANK() devuelve el mismo rango para las filas que tienen los mismos valores

A continuación se muestra la sintaxis de la función DENSE_RANK():

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

La función DENSE_RANK() se aplica a cada fila en cada partición definida por la cláusula PARTITION BY, en el orden de clasificación especificado por la cláusula ORDER BY. Restablecerá el rango al cruzar el límite de la partición. La cláusula PARTITION BY es opcional. Si lo omite, la función DENSE_RANK() tratará todo el conjunto de resultados como una única partición.

Ejemplo 1:

Primero, cree una tabla dense_ranks

CREATE TABLE dense_ranks (
    c VARCHAR(10)
);

Ahora inserte algunos datos en él:

INSERT INTO dense_ranks(c)
VALUES('A'), ('A'), ('B'), ('C'), ('C'), ('D'), ('E');

Ahora consulta dense_ranks

SELECT c from dense_ranks;

Dará como resultado la siguiente representación:

DENSO_RANGO()

SELECT
    c,
    DENSE_RANK() OVER (
        ORDER BY c
    ) dense_rank_number
FROM
    dense_ranks;

Producción:

Ejemplo 2:

Primero, cree dos tablas productos 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)
);

Ahora inserte algunos datos en la tabla:

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

DENSO_RANGO()

SELECT
    product_id,
    product_name,
    price,
    DENSE_RANK () OVER ( 
        ORDER BY price DESC
    ) price_rank 
FROM
    products;

Producción:

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *