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