Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
7
Выборка топ‑10 покупателей с более чем пятью покупками
Условие задачи
Переписать запрос, использующий ORM, в чистый SQL. Нужно получить десять пользователей, у которых количество записей в таблице Purchase превышает пять.
class User(db.Models):
name = models.CharField(
max_length=256,
blank=True,
default="",
verbose_name="Имя"
)
class Product(db.Models):
name = models.CharField(
max_length=256,
blank=True,
default="",
verbose_name="Название"
)
price = models.DecimalField()
class Purchase(db.Models):
user = models.ForeignKey(
model=User,
related_name="purchase",
on_delete=models.CASCADE
)
product = models.ForeignKey(
model=Product,
related_name="purchase",
on_delete=models.CASCADE
)
count_products = models.IntegerField(default=1)
users = User.objects.annotate(
count_purchases=Count(Purchase.objects.all())
).exclude(
count_purchases__lte=5
).order_by(
"-count_purchases"
)[:10]