Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

2.8 Агрегатные функции и их группировка
2 из 2 шагов пройдено

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

 

Count()

Объект QuerySet предоставляет вам метод count(), который возвращает количество содержащихся в нем объектов. Например, вы можете использовать count() метод для получения количества сотрудников:

Employee.objects.count()

Метод count() использует функцию SQL COUNT(*) для возврата количества строк в hr_employee таблице.

Чтобы получить количество сотрудников, чьи имена начинаются с буквы J, вы можете использовать оба метода объекта filter() и следующим образом: count() QuerySet

Employee.objects.filter(first_name__startswith='J').count()

В этом случае filter() метод формирует WHERE предложение, в то время как count() метод формирует COUNT() функцию.

 

Max()

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

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

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

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

 

Min()

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

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

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

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

 

Avg()

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

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

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

 

Sum()

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

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

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


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

У вас, наверное, опечатка: "Выполняет SQL MAX() для столбца зарплаты в таблице hr_employee и возвращает самый высокий возраст сотрудника." Столбца возраста может?

@Владимир_Бунин, спасибо, поправил.