Блог

Серия

SQL на HackerRank

Записей: 11MySQLHackerRankSQL ServerОбновлено 6 окт. 2026 г.

Задачи по SQL с HackerRank, решённые и объяснённые на настоящих таблицах, с диаграммой каждого запроса, показывающей, какие строки пропускает каждое предложение. От «SELECT и WHERE» до «Project Planning: оконные функции и CTE».

Записи

  1. SELECT и WHEREПервые запросы к таблице CITY: выбор столбцов, фильтрация через WHERE и цепочки условий, а также первые агрегаты с COUNT, SUM и AVG.
  2. JOIN между CITY и COUNTRYСоединение двух таблиц по ключу: INNER JOIN между CITY и COUNTRY с интерактивной диаграммой, на которой видно, какие строки остаются, а какие отпадают.
  3. STATION: названия и шаблоны (1)Первые задачи по таблице STATION: DISTINCT, подсчёты и фильтрация названий городов по гласной в начале или в конце с помощью SUBSTRING, LEFT и RIGHT.
  4. STATION: названия и шаблоны (2)Второй подход к STATION: отрицание через NOT IN, сочетание условий на первую и последнюю букву каждого названия, затем сумма, усечение и поиск максимума и минимума LAT_N.
  5. STATION: геометрия и медианыТри последние задачи по STATION, где запрос перестаёт быть фильтрацией и становится математикой: манхэттенское расстояние, евклидово расстояние и медиана.
  6. STUDENTS и EMPLOYEEСоставная сортировка, агрегаты с CASE и расчёт зарплат: задачи по таблицам STUDENTS, GRADES и EMPLOYEE.
  7. Треугольники и простые числаЗадачи на узоры: рисовать треугольники циклами в SQL Server и выводить простые числа в одну строку, где SQL используется почти как императивный язык, а также классифицировать треугольники через CASE WHEN.
  8. OCCUPATIONS: форматирование и сводная таблицаПридать результату форму: собирать строки с CONCAT, LEFT и LOWER и развернуть таблицу в четыре столбца с помощью ROW_NUMBER и CASE WHEN, потому что в MySQL нет PIVOT.
  9. Иерархии: двоичное дерево и оргструктураКогда одна строка зависит от другой: классифицировать узлы двоичного дерева, соединив таблицу саму с собой, и посчитать пять уровней оргструктуры без дублирования записей.
  10. Подзапросы и HAVINGФильтровать по тому, что известно только после группировки: максимумы по подсчётам, значения, встречающиеся один раз, сумма максимумов каждой группы через оконную функцию и коррелированный подзапрос, сравнивающий каждую строку с её группой.
  11. Project Planning: оконные функции и CTEОбъединить последовательные задачи в проекты: LAG, чтобы увидеть предыдущую дату, накопительная сумма через SUM OVER, нумерующая каждый проект, и CTE, которая группирует их и сортирует по длительности.

Ещё в блоге