PostgreSQL | Как получить уникальные значения столбца? — efim360.ru

PostgreSQL | Как получить уникальные значения столбца?

Вводные данные:

 

-- Тестовая таблица

CREATE TABLE IF NOT EXISTS test.t_2022_11_18 (

    id bigint NOT NULL GENERATED ALWAYS AS IDENTITY (INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),

    randomtext text,

    CONSTRAINT t_2022_11_18_id_pkey PRIMARY KEY (id)

)

 

-- Вставляем тестовые данные

INSERT INTO test.t_2022_11_18 (randomtext) VALUES (unnest(ARRAY['A','B','C','C','S','F','F','F','F','F','G','G']));

 

-- Смотрим на результат вставки

SELECT * FROM test.t_2022_11_18;

 

Вид таблицы после вставки данных:

В столбце randomtext есть повторяющиеся значения - PostgreSQL
В столбце randomtext есть повторяющиеся значения - PostgreSQL

 

Получение уникальных значений столбца через команду SELECT и предложение DISTINCT

 

-- Получение уникальных значений столбца через команду SELECT и предложение DISTINCT

SELECT DISTINCT randomtext FROM test.t_2022_11_18;

 

 Само слово "DISTINCT" переводится с английского языка как "отдельный" или "отчётливый". В нашем случае это указывает на уникальность.

Получили уникальные значения столбца в PostgreSQL
Получили уникальные значения столбца в PostgreSQL

После команды SELECT мы записали предложение DISTINCT, а после DISTINCT мы указали имя столбца, по которому нужно получить уникальные значения.

Обратите внимание. что PostgreSQL возвращает результаты без определённой сортировки по какому-либо из признаков. Что первое нашёл, то и отдал.

В этом примере мы получили только один столбец вместо двух, как у оригинальной таблицы. Именно так нам нужно было получить итоговый результат.

 

Получение уникальных значений столбца через команду SELECT и предложение GROUP BY

 

-- Получение уникальных значений столбца через команду SELECT и предложение GROUP BY

SELECT randomtext FROM test.t_2022_11_18 GROUP BY randomtext;

 

 Выражение с предложением GROUP BY даёт точно такой же результат. Разница заключается в месте написания самого предложения и в указании столбца, по которому нужно выполнить группировку. GROUP BY записывается в конце всего выражения SELECT.

Получили уникальные значения столбца в PostgreSQL предложением GROUP BY
Получили уникальные значения столбца в PostgreSQL предложением GROUP BY

Выдача также непредсказуема по сортировке.

 

Информационные ссылки

Официальный сайт WEB-оболочки pgAdmin - https://www.pgadmin.org

Официальный сайт СУБД PostgreSQL - https://www.postgresql.org

Команды SQL - https://postgrespro.ru/docs/postgresql/15/sql-commands

Раздел "Операторы и функции даты/времени" - https://postgrespro.ru/docs/postgresql/15/functions-datetime