Перейти к содержимому
TelegramGitHub

DISTINCT

DISTINCT убирает повторы. Он нужен, когда надо узнать, какие значения есть в столбце, или посчитать уникальные значения. Работаем с tutorial.aapl_historical_stock_price.

SELECT DISTINCT month
FROM tutorial.aapl_historical_stock_price
ORDER BY month;

Запрос вернёт 12 строк, по одной на каждый месяц.

DISTINCT действует на всю строку результата. Он убирает только те строки, которые полностью совпадают.

SELECT DISTINCT year, month
FROM tutorial.aapl_historical_stock_price
ORDER BY year, month;

Запрос вернёт 180 строк: каждая пара «год и месяц» встречается один раз.

COUNT(DISTINCT x) считает уникальные значения:

SELECT COUNT(DISTINCT month) AS months_count
FROM tutorial.aapl_historical_stock_price;

Результат: 12.

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

SELECT year,
COUNT(DISTINCT month) AS months_count
FROM tutorial.aapl_historical_stock_price
GROUP BY year
ORDER BY year;

Решайте сами, без AI. Сначала напишите запрос, потом сверьтесь с проверкой, и только потом открывайте решение.

Напишите запрос, который вернёт уникальные значения столбца year в хронологическом порядке.

Проверка: 15 строк, от 2000 до 2014.

Решение
SELECT DISTINCT year
FROM tutorial.aapl_historical_stock_price
ORDER BY year;

Напишите запрос, который посчитает число уникальных значений month для каждого года.

Проверка: 15 строк. В каждом году 12 месяцев.

Решение
SELECT year,
COUNT(DISTINCT month) AS months_count
FROM tutorial.aapl_historical_stock_price
GROUP BY year
ORDER BY year;

Напишите запрос, который отдельно посчитает число уникальных значений month и число уникальных значений year.

Проверка: одна строка: годов 15, месяцев 12.

Решение
SELECT COUNT(DISTINCT year) AS years_count,
COUNT(DISTINCT month) AS months_count
FROM tutorial.aapl_historical_stock_price;