Сегодня в 19:00 Мск проведём продвинутую практику по БД+SQL, где разберём задачи уровня Middle+ / Senior, которые встречаются и в работе, и на собеседованиях.
💥 SQL-запросы с JOIN на реальной БД через DBeaver
🔗 Подробности и запись
Стоимость участия от 1 650 рублей
✅ Запись будет доступна в платформе
🎁 Бонус: занятие в записи "Маппинг данных: БД и JSON"
А пока — задача для самопроверки 👇
По ней сразу видно, насколько уверенно вы чувствуете себя в SQL (JOIN-ах):
👍 решите быстро - вы в форме,
🧐 зависнете - значит на практике будет максимум пользы.
Задача:
В системе Интернет-магазина есть таблицы:
▫️ user (id, firstname, lastname, phone)
▫️ order (id, number, user_id, created_at)
▫️ product (id, name, price)
▫️ order_product (order_id, product_id, amount, sale_price)
Нужно написать SQL-запрос, который вернёт список заказов, где:
▫️ более 5 продуктов,
▫️ общая стоимость более 5 000 рублей.
В результате вывести:
+ номер заказа,
+ количество товаров,
+ имя пользователя-покупателя,
+ телефон покупателя,
+ полную стоимость заказа.
Ответ 🔽
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
SELECT
o.number AS order_number,
SUM(op.amount) AS items_count,
CONCAT(u.firstname, ' ', u.lastname) AS customer_name,
u.phone AS customer_phone,
SUM(op.amount * COALESCE(op.sale_price, p.price)) AS total_price
FROM "order" o
JOIN "user" u
ON u.id = o.user_id
JOIN order_product op
ON op.order_id = o.id
JOIN product p
ON p.id = op.product_id
GROUP BY
o.id, o.number, u.firstname, u.lastname, u.phone
HAVING
SUM(op.amount) > 5
AND SUM(op.amount * COALESCE(op.sale_price, p.price)) > 5000
ORDER BY total_price DESC;
Какие ещё интересные задачи по SQL недавно встречали на собесах?
Делитесь в комментариях ✍️
#БД_и_SQL_GA
