Duolingo для SQL · українською

Вивчай SQL на реальних задачах — і проходь співбесіди впевнено

Короткі бізнес-задачі, які перевіряє справжній Postgres-движок, а не вгадування ШІ. Миттєвий фідбек, підказки й стрик — як у Duolingo, тільки для SQL.

Безкоштовно · реєстрація за 30 секунд · без картки

SQL — мова, яку питають майже на кожній співбесіді

Аналітик, дата-інженер, продакт чи бекендер — без SQL не пройти технічний етап. Але читати документацію недостатньо: на інтерв'ю треба швидко писати коректні запити під тиском. SQLGuru тренує саме це — на тих патернах, що реально зустрічаються:

  • агрегації та GROUP BY / HAVING — метрики й звіти;
  • JOIN-и та підзапити — зв'язування таблиць;
  • віконні функції, ранжування, накопичувальні суми;
  • воронки, retention, когорти, помісячна виручка.

Кожна задача — це міні-кейс із бізнес-контекстом, як у справжньому продукті.

Чому це працює

🧠

Перевіряє справжній SQL-движок

Твій запит виконується в реальному Postgres, а результат звіряється з еталоном. Жодного «вгадування» від ШІ — вердикт завжди коректний.

💼

Реальні бізнес-сценарії

Не абстрактні table_a/column_b, а задачі з життя: користувачі, замовлення, виручка, retention — як на справжній роботі.

Миттєвий фідбек

Одразу бачиш, що не так: яка умова забута, де помилка логіки, і яке альтернативне рішення — за кнопкою, коли захочеш підглянути.

🔥

Прогрес і стрик

XP за складність, бонуси за серії днів. Маленькі регулярні кроки замість виснажливого зазубрювання перед інтерв'ю.

Приклади задач

Від простого SELECT до віконних функцій — складність росте разом із тобою.

Початківець

Активні користувачі з Києва

Маркетинг готує розсилку для активних киян.

SELECT name
FROM users
WHERE city = 'Київ'
  AND is_active = true;
SELECT · WHERE
Середній

Замовлення з іменами клієнтів

Потрібно показати, хто саме зробив кожне замовлення.

SELECT o.id, c.name, o.total
FROM orders o
JOIN customers c
  ON c.id = o.customer_id;
INNER JOIN
Просунутий

Топ-товар у кожній категорії

Класичне інтерв'ю-завдання на віконні функції.

SELECT category, name, price
FROM (
  SELECT *, ROW_NUMBER() OVER (
    PARTITION BY category
    ORDER BY price DESC) AS rn
  FROM products
) t
WHERE rn = 1;
Window · ROW_NUMBER
Правильно! Результат точно збігається з очікуваним. +15 XP
Майже. Запит виконався, але бракує умови is_active = true — звір рядки.

Як це працює

1

Обери рівень і ціль

Початківець, середній чи просунутий — і фокус: підготовка до співбесід, продуктова аналітика чи дата-інженерія.

2

Розв'язуй задачі

Пиши SQL у редакторі з підсвіткою. Застряг — бери одну з трьох підказок, що ведуть до рішення, не видаючи його.

3

Отримуй фідбек і рости

Миттєва перевірка, пояснення помилок, XP і стрик. Бібліотека концепцій поряд — повторити теорію за секунду.

Що всередині

Вердикт від реального Postgres, не від ШІ
💡Три рівні підказок — від ідеї до майже-рішення
📚Бібліотека концепцій з прикладами
📈XP, рівні складності й щоденний стрик
🎯Патерни прямо зі співбесід: воронки, retention, вікна
🇺🇦Повністю українською

Готовий прокачати SQL для співбесіди?

Почни безкоштовно вже сьогодні — перша задача за хвилину.

Зареєструватися безкоштовно