Sobes.tech
Middle
38

შარტი არსებობს მონაცემთა ბაზა შემდეგი მონაცემთა სქემით // მომხმარებელი id | სახელი | გვარი | დაბადების თარიღი 1 | Ivan | Petrov | [ტელეფონი] | Anna | Petrova | [ტელეფონი] | Anna | Petrova | [ტელეფონი] // შეძენა sku | ფასი | user_id | თარიღი 1 | 5500 | 1 | [ტელეფონი] | 5700 | 1 | [ტელეფონი] | 4000 | 1 | [ტელეფონი] | 8000 | 2 | [ტელეფონი] | 400 | 2 | [ტელეფონი] // ბლოკის სია user_id | დაწყების თარიღი 1 | [ტელეფონი] აუცილებელია გამოიტანოს: 1. უნიკალური კომბინაციები მომხმარებლის და პროდუქტის ID-ის ყველა შეძენისათვის, რომელიც მომხმარებლებმა განახორციელეს მათი ბლოკის დაწყებამდე. სორტირება პირველ რიგში მომხმარებლის სახელით, შემდეგ SKU-ით 2. იპოვეთ მომხმარებლები, რომლებმაც განახორციელეს შეძენები 5000 რუბლზე მეტ ფასად. გამოიტანეთ მათი სახელები შემდეგი ფორმატით: user_id | სახელი | გვარი | შეძენების ჯამი

კომპანიებმა სადაც სთხოვეს
OZONOZON

პასუხი AI-სგან

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