Найти тему
Илья Хохлов

Новые задачи по SQL (2024)

Здравствуйте, коллеги!

Как насчёт порции новых задачек по SQL? Приглашаю потренироваться!

За последние две недели наш Телеграм-канал про SQL и базы данных пополнился новыми интересными практическими задачами и вопросами с собеседований! Несколько самых интересных из них я решил разместить здесь!

Благодарю, что продолжаете делиться подобным контентом и активно участвуете в решении опубликованных задач других участников!

ЗАДАЧА 1

Есть два запроса.

Запрос 1:
SELECT o.*,
(SELECT COUNT(*)
FROM ORDER_ITEMS
WHERE ID_ORDER = o.ID) AS COUNT_ITEMS
FROM ORDERS o
WHERE o.ID = 10

Запрос 2:
SELECT o.*,
COALESCE( (SELECT COUNT(*)
FROM ORDER_ITEMS
WHERE ID_ORDER = o.ID), 0) AS COUNT_ITEMS
FROM ORDERS o
WHERE o.ID = 10

В таблице ORDER_ITEMS нет строк со значением 10 в столбце ID_ORDER. Будет ли результат выполнения обеих запросов одинаков? Правильный ответ и процент участников, ответивших правильно, можно посмотреть в нашем Телеграм-канале.

ЗАДАЧА 2

Дан некоторый SQL-запрос:

Select Round (p.Width * p.Length * p.Height) * p.Items_Count  Total_Size1,
            Round
(p.Width * p.Length * p.Height * p.Items_Count)  Total_Size2
  From Positions p

Могут ли быть при каких-либо значениях ширины (столбец Width), длины (Столбец Length) или высоты (столбец Height) разными значения в столбцах Total_Size1 и Total_Size2?

Правильный ответ, пояснение к нему, а также процент участников, ответивших правильно, можно найти в нашем Телеграм-канале.

Тут пауза, немного айти юмора. Внимание, код не повторять на реальной базе!

-2

ЗАДАЧА 3

Есть таблица, содержащая некоторые суммы начислений, пусть называется TABLE_INVOICES, имеющая, среди прочих, следующие поля:
...
PERIOD NUMBER,
AMOUNT NUMBER,
...

В них хранится информация вида:
PERIOD AMOUNT
202403 100.78
202404 90.12
202405 200.51
...

В столбце PERIOD значение года и месяца.

И ещё есть таблица подготовленных коэффициентов для каждого месяца, пусть называется TABLE_KOEF. Имеет, по аналогии с предыдущей таблицей, тоже столбец PERIOD, содержащий год и месяц.

Содержит информацию вида:
PERIOD KOEF
202402 1
202403 0.5
202404 0.75

В таблице TABLE_KOEF столбец PERIOD является первичным ключом.

И теперь что нужно сделать: написать SQL-запрос, выводящий все записи из таблицы TABLE_INVOICES, и для каждой строки дополнительно, в отдельном столбце, рассчитывающий произведение значения столбца AMOUNT на коэффициент предыдущего месяца из таблицы TABLE_KOEF. В таблице коэффициентов данные не для всех периодов, есть пропуски.

Пример решения и этой задачи есть в нашем Телеграм-канале.

Спасибо, что дочитали до конца! Буду рад лайку, если понравилась статья, или подписке на канал!