Sobes.tech
Middle
39

Condición Hay una base de datos con el siguiente esquema de datos // usuario id | nombre | apellido | nacimiento 1 | Ivan | Petrov | [teléfono] | Anna | Petrova | [teléfono] | Anna | Petrova | [teléfono] // compra sku | precio | user_id | fecha 1 | 5500 | 1 | [teléfono] | 5700 | 1 | [teléfono] | 4000 | 1 | [teléfono] | 8000 | 2 | [teléfono] | 400 | 2 | [teléfono] // lista_de_ban user_id | fecha_desde 1 | [teléfono] Se necesita mostrar: 1. Mostrar combinaciones únicas de usuario y id del producto para todas las compras realizadas por usuarios antes de que los baneen. Ordenar primero por nombre de usuario, luego por SKU 2. Encontrar usuarios que hayan realizado compras por un monto mayor a 5000 rublos. Mostrar sus nombres en formato id de usuario | nombre | apellido | monto total de compras

Empresas donde se preguntó
OZONOZON

Respuesta de la IA

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, чтобы получить эти данные и вывести в нужном формате.