Django 5 для начинающих

Прогресс по курсу:  9/1004

3.7 Django ORM, поисковые поля и агрегатные функции
4 из 16 шагов пройдено
0 из 60 баллов  получено

Агрегатные функции

Агрегатная функция принимает список значений и возвращает одно значение. Наиболее часто используемыми агрегатными функциями являются count, Max, Min, Avg и Sum.

 count()

Подсчитывает количество объектов в QuerySet. Может использоваться для подсчета всех объектов в таблице базы данных:

>>> Worker.objects.count()
9

Или используется для подсчета количества объектов, возвращенных запросом:

>>> Worker.objects.filter(last_name='Smith').count()
3

 

Для того, чтобы получить уже агрегированные данные, нужно воспользоваться методом .aggregate(), вызвав его у имеющегося менеджера или QuerySet. Этот метод принимает в качестве параметров так называемые агрегирующие функции. Функций этих достаточно много, но все они используются примерно одинаково.

Чтобы работать со следующими методами, мы должны в шелле импортировать их:

from django.db.models import Max, Min, Avg, Sum

 

Max()

Возвращает Max() максимальное значение в наборе значений. Он принимает столбец, для которого вы хотите получить наибольшее значение.

Например, в следующем примере используется метод Max() для возврата самого высокого возраста сотрудника:

Worker.objects.aggregate(Max('age'))

Выполняет SQL MAX() для столбца возраста в таблице и возвращает самый высокий возраст сотрудника.

 

Min()

Метод Min() возвращает минимальное значение в наборе значений. Как и Max(), он принимает столбец, для которого вы хотите получить наименьшее значение.

В следующем примере используется Min() для возврата самого низкого возраста сотрудника:

Worker.objects.aggregate(Min('age'))

Функция Min() выполняет функцию SQL MIN(), которая возвращает минимальное значение в столбце возраста.

 

Avg()

Метод возвращает среднее значение в наборе значений. Он принимает имя столбца и возвращает среднее значение всех значений в этом столбце:

Worker.objects.aggregate(Avg('age'))

Незаметно Avg() выполняет функцию SQL AVG() для столбца возраста и возвращает средний возраст сотрудников.

 

Sum()

Метод возвращает сумму значений. Например, вы можете использовать Sum() для расчета общего возраста сотрудников компании:

Worker.objects.aggregate(Sum('age'))

Выполняет функцию SQL SUM() и возвращает общее значение всех значений в столбце 'age' таблицы.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

Я не уверен ,но возможно стоило бы написать что эти методы используются с методом 'aggregate',а то не понятно откуда он берется.

@User_678998186, спасибо, добавили информацию