DISTINCT
DISTINCT убирает повторы. Он нужен, когда надо узнать, какие значения есть в столбце, или посчитать уникальные значения. Работаем с tutorial.aapl_historical_stock_price.
Уникальные значения
Заголовок раздела «Уникальные значения»SELECT DISTINCT monthFROM tutorial.aapl_historical_stock_priceORDER BY month;Запрос вернёт 12 строк, по одной на каждый месяц.
DISTINCT для нескольких столбцов
Заголовок раздела «DISTINCT для нескольких столбцов»DISTINCT действует на всю строку результата. Он убирает только те строки, которые полностью совпадают.
SELECT DISTINCT year, monthFROM tutorial.aapl_historical_stock_priceORDER BY year, month;Запрос вернёт 180 строк: каждая пара «год и месяц» встречается один раз.
COUNT(DISTINCT …)
Заголовок раздела «COUNT(DISTINCT …)»COUNT(DISTINCT x) считает уникальные значения:
SELECT COUNT(DISTINCT month) AS months_countFROM tutorial.aapl_historical_stock_price;Результат: 12.
В сочетании с GROUP BY можно считать уникальные значения по группам. В следующем примере база считает уникальные месяцы для каждого года.
SELECT year, COUNT(DISTINCT month) AS months_countFROM tutorial.aapl_historical_stock_priceGROUP BY yearORDER BY year;Практика
Заголовок раздела «Практика»Решайте сами, без AI. Сначала напишите запрос, потом сверьтесь с проверкой, и только потом открывайте решение.
Задание 1
Заголовок раздела «Задание 1»Напишите запрос, который вернёт уникальные значения столбца year в хронологическом порядке.
Проверка: 15 строк, от 2000 до 2014.
Решение
SELECT DISTINCT yearFROM tutorial.aapl_historical_stock_priceORDER BY year;Задание 2
Заголовок раздела «Задание 2»Напишите запрос, который посчитает число уникальных значений month для каждого года.
Проверка: 15 строк. В каждом году 12 месяцев.
Решение
SELECT year, COUNT(DISTINCT month) AS months_countFROM tutorial.aapl_historical_stock_priceGROUP BY yearORDER BY year;Задание 3
Заголовок раздела «Задание 3»Напишите запрос, который отдельно посчитает число уникальных значений month и число уникальных значений year.
Проверка: одна строка: годов 15, месяцев 12.
Решение
SELECT COUNT(DISTINCT year) AS years_count, COUNT(DISTINCT month) AS months_countFROM tutorial.aapl_historical_stock_price;