Palabra clave DISTINCT en PostgreSQL

En PostgreSQL, la palabra clave DISTINCT se usa junto con la sentencia SELECT para eliminar registros duplicados y obtener solo registros únicos.

Cuando trabajamos con datos, puede darse el caso de que haya múltiples registros duplicados en una tabla. Al extraer dichos registros, la palabra clave DISTINCT resulta especialmente útil, ya que obtiene solo una vez cada registro único, en lugar de recuperar duplicados.

Sintaxis

La sintaxis básica de la palabra clave DISTINCT para eliminar registros duplicados es la siguiente:

SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]

Ejemplo

Crear la tabla COMPANY (Descargar el archivo SQL de COMPANY), con los siguientes datos:

ejemplodb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Insertemos dos registros:

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (8, 'Paul', 32, 'California', 20000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (9, 'Allen', 25, 'Texas', 15000.00 );

Ahora los datos son los siguientes:

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas      |  15000
  3 | Teddy |  23 | Norway     |  20000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000
  8 | Paul  |  32 | California |  20000
  9 | Allen |  25 | Texas      |  15000
(9 rows)

A continuación, extraigamos todos los NOMBRES (NAME) de la tabla COMPANY:

ejemplodb=# SELECT name FROM COMPANY;

El resultado es el siguiente:

 name
-------
 Paul
 Allen
 Teddy
 Mark
 David
 Kim
 James
 Paul
 Allen
(9 rows)

Ahora usemos la cláusula DISTINCT en la sentencia SELECT:

ejemplodb=# SELECT DISTINCT name FROM COMPANY;

El resultado es el siguiente:

name
-------
 Teddy
 Paul
 Mark
 David
 Allen
 Kim
 James
(7 rows)

Como se puede ver en el resultado, los datos duplicados ya han sido filtrados.

Otras extensiones