Здравствуйте, коллеги!
Как насчёт порции новых задачек по 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?
Правильный ответ, пояснение к нему, а также процент участников, ответивших правильно, можно найти в нашем Телеграм-канале.
Тут пауза, немного айти юмора. Внимание, код не повторять на реальной базе!
ЗАДАЧА 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. В таблице коэффициентов данные не для всех периодов, есть пропуски.
Пример решения и этой задачи есть в нашем Телеграм-канале.
Спасибо, что дочитали до конца! Буду рад лайку, если понравилась статья, или подписке на канал!