PostgreSQL: expresión DISTINCT ON

PostgreSQL también proporciona una expresión como DISTINCT ON que se usa con la declaración SELECT para eliminar duplicados de un resultado de conjunto de consultas al igual que la cláusula DISTINCT. Además de eso, también mantiene la «primera fila» de cada fila de duplicados en la consulta establecer resultado. 

Sintaxis: 
SELECT DISTINCT ON (column_1) column_alias, column_2 FROM table_name ORDER BY column_1, column_2;

Como el orden de las filas devueltas por la declaración SELECT es impredecible, lo que significa que la «primera fila» de cada grupo del duplicado también es impredecible. Es una buena práctica utilizar la cláusula ORDER BY con DISTINCT ON(expresión) para hacer que el resultado se establezca en el orden deseado. 

Nota: La expresión DISTINCT ON siempre debe coincidir con la expresión más a la izquierda en la cláusula ORDER BY. 

Ahora, veamos algunos ejemplos para una mejor comprensión. A modo de ejemplo, crearemos una base de datos de muestra como se explica a continuación: 

Cree una base de datos (por ejemplo, Favorite_colours) usando los comandos que se muestran a continuación: 
 

CREATE DATABASE Favourite_colours;

Ahora agregue una tabla (digamos, my_table) con columnas (digamos, id, color_1 y color_2) a la base de datos usando el siguiente comando: 

CREATE TABLE my_table(
    id serial NOT NULL PRIMARY KEY,
    colour_1 VARCHAR,
    colour_2 VARCHAR
);

Ahora inserte algunos datos en la tabla que acabamos de agregar a nuestra base de datos usando el siguiente comando: 
 

INSERT INTO my_table(colour_1, colour_2)
VALUES
    ('red', 'red'),
    ('red', 'red'),
    ('red', NULL),
    (NULL, 'red'),
    ('red', 'green'),
    ('red', 'blue'),
    ('green', 'red'),
    ('green', 'blue'),
    ('green', 'green'),
    ('blue', 'red'),
    ('blue', 'green'),
    ('blue', 'blue');

Ahora verifique si todo está según lo previsto haciendo una consulta como se muestra a continuación: 
 

SELECT
    id,
    colour_1,
    colour_2
FROM
    my_table;

Si todo está según lo previsto, el resultado será como se muestra a continuación: 
 

Dado que nuestra base de datos está lista, pasamos a la implementación de la expresión SELECT DISTINCT ON. 

Ejemplo 1: 
 

SELECT
    DISTINCT ON
    (colour_1) colour_1,
    colour_2
FROM
    my_table
ORDER BY
    colour_1,
    colour_2;

Producción: 
 

Ejemplo 2: 
observe el cambio en el orden de resultados del conjunto de consultas. 

SELECT
    DISTINCT ON
    (colour_2) colour_2,
    colour_1
FROM
    my_table
ORDER BY
    colour_2,
    colour_1;

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 *