Sobes.tech
Middle

Sąlyga Yra duomenų bazė su tokiu duomenų schema // vartotojas id | vardas | pavardė | gimimo data 1 | Ivan | Petrov | [telefonas] | Anna | Petrova | [telefonas] | Anna | Petrova | [telefonas] // pirkimas sku | kaina | user_id | data 1 | 5500 | 1 | [telefonas] | 5700 | 1 | [telefonas] | 4000 | 1 | [telefonas] | 8000 | 2 | [telefonas] | 400 | 2 | [telefonas] // užblokuota_sąrašas user_id | pradžios_data 1 | [telefonas] Reikia parodyti: 1. Unikalios vartotojo ir produkto ID kombinacijos visiems pirkimams, kuriuos atliko vartotojai iki jų užblokavimo. Rūšiuoti pirmiausia pagal vartotojo vardą, tada pagal SKU 2. Rasti vartotojus, kurie atliko pirkimus už daugiau nei 5000 rublių. Rodyti jų vardus tokiu formatu: user_id | vardas | pavardė | pirkimų suma

sobes.tech AI

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