Sobes.tech
Назад к вопросам
Middle
2

Условие Есть база с такой схемой данных // user id | firstname | lastname | birth 1 | Ivan | Petrov | [phone] | Anna | Petrova | [phone] | Anna | Petrova | [phone] // purchase sku | price | user_id | date 1 | 5500 | 1 | [phone] | 5700 | 1 | [phone] | 4000 | 1 | [phone] | 8000 | 2 | [phone] | 400 | 2 | [phone] // ban_list user_id | date_from 1 | [phone] Нужно вывести: 1. Вывести уникальные комбинации пользователя и id товара для всех покупок, совершенных пользователями до того, как их забанили. Отсортировать сначала по имени пользователя, потом по SKU 2. Найти пользователей, которые совершили покупок на сумму больше 5000р. Вывести их имена в формате id пользователя | имя | фамилия | сумма покупок

Компании, где спрашивали
OZONOZON

Ответ от нейросети

sobes.tech AI

Для решения задачи на SQL:

  1. Вывести уникальные комбинации пользователя и id товара для покупок, совершённых до бана, отсортировать по имени пользователя и SKU:
SELECT DISTINCT u.firstname, u.lastname, p.sku
FROM purchase p
JOIN user u ON p.user_id = u.id
LEFT JOIN ban_list b ON p.user_id = b.user_id
WHERE b.date_from IS NULL OR p.date < b.date_from
ORDER BY u.firstname, p.sku;
  1. Найти пользователей, сумма покупок которых больше 5000, и вывести id, имя, фамилию и сумму:
SELECT u.id, u.firstname, u.lastname, SUM(p.price) AS total_spent
FROM user u
JOIN purchase p ON u.id = p.user_id
GROUP BY u.id, u.firstname, u.lastname
HAVING SUM(p.price) > 5000;

Если нужно на Python, то можно использовать ORM или raw SQL-запросы с библиотекой, например, psycopg2 или SQLAlchemy, чтобы получить эти данные и вывести в нужном формате.