Ключевые функции SQL для старта работы

Если вы только начинаете свой путь в аналитике данных и хотите разобраться с SQL, то вы на правильном пути. Эта статья поможет вам освоить ключевые SQL-функции и применить их на практике. Мы решим небольшую задачу, чтобы увидеть, как SQL облегчает работу с данными. Эта задача была составлена инженером/архитектором данных (VK) и постоянным экспертом Changellenge >> Education Серафимом Фролкиным.
Хотите освоить SQL и быстро писать запросы?
Наш курс поможет вам овладеть основами всего за несколько недель!
Освоить профессию

Зачем аналитику SQL?

В крупных компаниях информация хранится в базах данных, и для доступа к ней аналитики используют SQL — язык, предназначенный для работы с такими базами. SQL позволяет не только получать нужную информацию, но и фильтровать её по заданным условиям, группировать и анализировать. Без знания SQL аналитик просто не сможет добраться до нужных данных и провести анализ. Этот язык интуитивно понятен, а базовые команды изучаются быстро, что делает SQL отличным выбором для новичков. Если вы хотите стать аналитиком, умение писать SQL-запросы вам точно пригодится.

Постановка задачи и вводные данные

В этой задаче мы будем использовать SQL для анализа данных о чемпионате Европы по футболу 2024, чтобы научиться работать с основными функциями языка. Ответим на несколько вопросов:
  1. Какие страны участвуют в чемпионате?
  2. Сколько всего игроков участвует в турнире?
  3. Какая максимальная и минимальная рыночная стоимость игроков на турнире?
  4. Какие игроки имеют рыночную стоимость выше миллиона?
  5. Кто стал самым результативным игроком по количеству голов?
  6. Из какого клуба было больше всего игроков?
  7. Какова общая рыночная стоимость игроков из каждой страны?
Эти вопросы помогут нам постепенно изучить основные функции SQL и понять, как их можно использовать на практике. В этой статье мы разберем 12 командных слов:
  1. SELECT — определяет, какие данные мы хотим видеть.
  2. FROM — указывает, из какой таблицы берем данные.
  3. WHERE — фильтрует строки по заданным условиям.
  4. COUNT — считает количество строк, подходящих под заданные условия.
  5. SUM — суммирует значения в указанном столбце.
  6. MAX — находит максимальное значение в столбце
  7. MIN — находит минимальное значение в столбце.
  8. DISTINCT — выбирает уникальные значения.
  9. GROUP BY — группирует данные по указанной категории.
  10. ORDER BY — сортирует данные по указанным столбцам.
  11. LIMIT — ограничивает количество выводимых строк.
  12. AS — присваивает псевдоним столбцу или таблице, делая результат более читабельным.

Знакомимся с данными

Для старта вам нужно скачать таблицу euro2024_players, в которой собрана информация о футболистах Чемпионата Европы 2024. Таблица содержит пять колонок:

  • Name — имя игрока.
  • Country — страна, за которую он играет.
  • Goals — количество голов, которые забил игрок.
  • MarketValue — рыночная стоимость игрока.
  • Position — позиция на поле.

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

Для тренировки работы с SQL мы будем использовать бесплатный сервис SQLite Online. Работа с ним не требует регистрации или других дополнительных действий. Перейдите на сайт SQLite Online и загрузите файл данных, с которым будем работать.

Чтобы загрузить данные, нажимаем на Import.
При импорте используем следующие настройки:
Важно! Сохраните файл под названием euro2024_players, иначе код может выдавать ошибку.
Type (тип файла): CSV
Delimiter (разделитель между столбцами): запятая
Column name (заголовки): First line.

Как выглядит интерфейс программы?

В это поле нужно вводить запросы. Каждый новый запрос можно вводить или заново (то есть удалять предыдущий), или ниже предыдущего.
Для того чтобы запустить запрос, кликните Run.
В этом поле будет появляться результат запроса.

Пошаговое решение задачи

Какие страны участвуют в чемпионате?
Чтобы узнать, какие страны представлены на турнире, начнем с базовых команд для извлечения данных.
Шаг 1. SELECT и FROM: извлечение данных
В SQL запрос обычно начинается с команды SELECT, которая определяет, какие столбцы мы хотим видеть в результате. FROM указывает, из какой таблицы брать данные. В нашем случае мы хотим выбрать столбец Country, чтобы увидеть, какие страны представлены на турнире. Таблица у нас только одна — euro2024_players.
SELECT Country

FROM euro2024_players;
//
Этот запрос покажет список стран, но с дублирующимися значениями (как Германия на скриншоте), так как одна страна представлена несколькими игроками.
Шаг 2: DISTINCT — извлечение уникальных значений
Чтобы получить только уникальные страны, без повторов, добавим DISTINCT. Эта команда убирает дубли и помогает увидеть список уникальных значений — в нашем случае, уникальные страны на турнире.
SELECT DISTINCT Country

FROM euro2024_players;
//
Теперь мы получим только уникальные страны, без повторов.
Сколько всего игроков участвует в турнире?
Чтобы узнать общее количество участников, используем функцию для подсчета записей.
Шаг 3. COUNT: подсчет количества записей
Используем функцию COUNT, чтобы определить количество строк в таблице. Таким образом мы посчитаем количество игроков, участвующих в турнире.
SELECT COUNT(Name)

FROM euro2024_players;
//
Запрос вернет общее количество записей в таблице, то есть количество игроков.
Какая максимальная и минимальная рыночная стоимость игроков на турнире?
Чтобы узнать самую высокую и самую низкую рыночную стоимость игроков, используем функции для нахождения крайних значений.
Применяя эти запросы, вы сможете быстро находить нужные данные.
Хотите попробовать SQL в действии? Оцените наши задания в курсе по SQL!
Освоить профессию
Шаг 4. MAX и MIN: нахождение максимального и минимального значения
Функции MAX и MIN помогают найти самые большие и самые маленькие значения в указанном столбце. Например, MAX покажет наибольшую рыночную стоимость игрока, а MIN — наименьшую. Используем функцию после SELECT. В скобках укажем название столбца, в котором ищем максимальное значение.
SELECT MAX(MarketValue)

FROM euro2024_players;
//
Этот запрос вернет максимальную рыночную стоимость игрока, позволяя определить самую высокую цену среди всех участников.
А этот запрос вернет минимальную рыночную стоимость игрока, что покажет самую низкую цену в базе данных.
SELECT MIN(MarketValue)

FROM euro2024_players;
//
Кажется, не хватает имени игрока, чью рыночную стоимость выдает запрос. Давайте добавим в первую строку название столбца, в котором зафиксировано имя футболиста.
Для максимальной стоимости:
SELECT Name, MAX(MarketValue)

FROM euro2024_players;
//
Самым дорогим игроком был Jude Bellingham.
SELECT Name, MIN(MarketValue)

FROM euro2024_players;
//
Для минимальной стоимости:
Самым недорогим игроком был Giorgi Loria.
Какие игроки имеют рыночную стоимость выше миллиона?
Шаг 5. WHERE: фильтрация данных
SELECT Name, MarketValue

FROM euro2024_players

WHERE MarketValue > 1000000;
//
Команда WHERE позволяет выбрать только те строки, которые соответствуют заданным условиям. Здесь мы используем её, чтобы отфильтровать игроков с рыночной стоимостью выше одного миллиона.
Указание нужных столбцов с SELECT
В первой строке мы используем SELECT, чтобы указать, какие именно столбцы хотим видеть в результате запроса — имена игроков (Name) и их рыночную стоимость (MarketValue). Это помогает сразу понять, кто из игроков обладает высокой стоимостью, а не просто получить список чисел без имён. Так же мы делали и в предыдущем запросе.

Важно: SQL выполняет команды в определённой последовательности. WHERE следует после FROM, поскольку фильтрация выполняется только после выбора данных из конкретной таблицы. Если порядок будет нарушен, запрос не сработает.

Запрос покажет игроков, у которых рыночная стоимость больше одного миллиона. Это удобно для фильтрации и анализа определенных категорий данных.
Кто стал самым результативным игроком по количеству голов?
Чтобы определить, кто забил больше всего голов, используем сортировку данных.
Шаг 6. ORDER BY: сортировка данных
SELECT Name, Goals

FROM euro2024_players

ORDER BY Goals DESC

LIMIT 1;
//
ORDER BY позволяет сортировать результаты запроса по любому столбцу. Здесь мы хотим отсортировать игроков по количеству голов, чтобы узнать, кто стал самым результативным. По умолчанию сортировка идет по возрастанию (ASC), но добавив DESC, мы отсортируем данные по убыванию — от большего к меньшему. Таким образом, игрок с наибольшим количеством голов окажется первым в списке.
Ограничение вывода с LIMIT
Мы добавляем LIMIT 1, чтобы вывести только одного игрока — того, кто забил больше всех. Если бы мы не указали LIMIT, SQL показал бы всех игроков, отсортированных по количеству голов. LIMIT 1 позволяет сразу увидеть самого результативного игрока, не просматривая весь список.

Такой запрос выведет самого результативного игрока с наибольшим числом голов. Вряд ли вы удивились, что это Криштиану Роналду!
Комментарий от автора задачи, Серафима Фролкина:
Такую задачу можно решить по-разному, ведь в SQL часто есть несколько способов достичь одной и той же цели. Здесь мы выбрали сортировку ORDER BY с LIMIT 1, чтобы быстро и просто найти игрока с наибольшим количеством голов. Этот подход особенно удобен для новичков: он интуитивно понятен и требует минимальных операций.

Если бы мы хотели увидеть, например, топ-3 или топ-10 игроков, такой метод оказался бы ещё полезнее, так как результат легко расширить, изменив только значение LIMIT. Конечно, можно было бы использовать и функцию MAX, но это потребовало бы больше ресурсов на выполнение запроса. На таком небольшом датасете это не имеет значения, но, если мы работаем с миллионами строк, стоит писать более эффективный код.
Из какого клуба было больше всего игроков?
Чтобы ответить на этот вопрос, используем группировку данных и агрегатные функции.
Шаг 7. GROUP BY: группировка данных
SELECT Club, COUNT(Name) AS players_number

FROM euro2024_players

GROUP BY Club

ORDER BY players_number DESC;
//
GROUP BY в SQL позволяет объединять строки по определённой категории, такой как клуб или страна. В нашем случае, чтобы узнать, сколько игроков представляет каждый клуб, мы сгруппируем данные по столбцу Club.
Псевдонимы с AS
Иногда полезно дать столбцу более понятное имя. AS в SQL позволяет присвоить результату временное имя (псевдоним). Например, добавив AS players_number после COUNT (Name), мы обозначим, что результат представляет количество игроков в каждом клубе. Это сделает наш вывод более читаемым и понятным.
Комментарий от автора задачи, Серафима Фролкина:
Представьте, что GROUP BY — это способ сказать SQL, как именно нужно сгруппировать данные, чтобы посчитать что-то для каждой группы. В нашем примере мы хотим узнать, сколько игроков представляет каждый клуб, поэтому добавляем GROUP BY Club.

Важно использовать GROUP BY вместе с функцией COUNT, потому что, если мы просто напишем COUNT (Name), SQL не поймет, для какой группы делать подсчёт, и запрос не сработает. GROUP BY помогает SQL объединить данные по клубам, а COUNT — посчитать игроков внутри каждой такой группы
Какова общая рыночная стоимость игроков из каждой страны?
Чтобы понять, какую рыночную стоимость имеет каждая команда, мы можем использовать функцию суммирования.
Этот запрос покажет, сколько игроков в каждом клубе, с помощью сортировки клубов по числу представленных на турнире игроков (от большего к меньшему).
Шаг 8. SUM: суммирование значений
SELECT Country, SUM(MarketValue) AS total_team_value

FROM euro2024_players

GROUP BY Country
//
Функция SUM позволяет складывать значения в определённом столбце. Здесь она пригодится для подсчёта общей рыночной стоимости игроков из каждой страны. Это полезно, когда мы хотим узнать суммарную «стоимость» сборной команды.
Группировка с GROUP BY и создание псевдонима
Как и раньше, мы используем GROUP BY, чтобы сгруппировать данные по странам, а затем складываем значения в каждой группе с помощью SUM. Дополнительно присваиваем результату псевдоним с AS total_team_value, чтобы сразу было понятно, что этот столбец представляет общую стоимость команды.
Поздравляем, вы попробовали работу с главными функциями SQL и узнали, кто самый дорогостоящий футболист Евро 2024!
Этот запрос показывает суммарную рыночную стоимость игроков для каждой сборной, помогая оценить общую «стоимость» команды.

Краткая памятка по сочетанию SQL-функций

  • Извлечение уникальных значений: когда нужно получить только уникальные записи в данных, используйте SELECT DISTINCT вместе с FROM. Это помогает исключить дубли и увидеть список уникальных значений.

  • Подсчет количества записей: для определения общего количества строк в таблице или по конкретным условиям применяйте COUNT с SELECT и указывайте таблицу через FROM.

  • Фильтрация и сортировка: чтобы выбрать записи, соответствующие определённым условиям, используйте WHERE для фильтрации. Добавьте ORDER BY, чтобы отсортировать результат, и LIMIT для ограничения количества строк в выводе.

  • Группировка и агрегатные функции: при необходимости провести анализ по категориям или посчитать значения внутри каждой группы (например, суммарные или средние значения), сочетайте GROUP BY с функциями вроде COUNT и SUM. Псевдонимы с AS помогают сделать вывод более читабельным.

  • Поиск крайних значений: чтобы найти максимальное или минимальное значение в столбце, используйте MAX и MIN вместе с SELECT.

Заключение

Вы использовали ключевые операторы и функции SQL, которые являются основой для решения аналитических задач. Эти навыки помогут вам уверенно работать с данными, извлекая, обрабатывая и анализируя их.

Готовы углубиться в SQL и стать мастером анализа данных? Присоединяйтесь к нашим курсам, где вас ждут новые задачи, советы экспертов и практические упражнения, чтобы укрепить ваши знания и сделать шаг навстречу анализу данных!

Статью подготовила:

Завадская Юлия

Changellenge >> Education
Методист
Хотите освоить SQL и быстро писать запросы?
Наш курс поможет вам овладеть основами всего за несколько недель!
Освоить профессию