Atualizado: 18/01/2024

Métodos count e aggregate no Django

Método count

Para calcular a quantidade de registros em um QuerySet, é possível utilizar o método count() ou sua versão assíncrona acount():

from .models import Person

number = Person.objects.count()
print(number)

Esse método é equivalente a uma consulta SQL SELECT COUNT(*), o que o torna eficiente ao executar consultas de contagem de registros.

Também é possível calcular a quantidade de registros usando a função len(), passando um QuerySet previamente carregado:

from .models import Person

people = Person.objects.all()
number = len(people)  # Número de registros no conjunto people
print(number)

Quando utilizar count ou len?

Se os registros já tiverem sido carregados anteriormente (como ao chamar o método all()), len() é mais eficiente, pois trabalha diretamente com os registros já armazenados em memória, sem executar uma nova consulta ao banco de dados. Por outro lado, se os registros ainda não foram carregados, o método count() é preferível, já que ele realiza a contagem diretamente no banco de dados, sem carregar os registros individualmente.

Método aggregate

O método aggregate() permite executar funções de agregação, como soma, média, mínimo e máximo, retornando os resultados como valores individuais:

  • Sum: Calcula a soma.

  • Avg: Calcula a média.

  • Min: Retorna o menor valor.

  • Max: Retorna o maior valor.

Essas classes recebem como parâmetro o campo sobre o qual o cálculo será realizado. Exemplos de uso:

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

# Soma de todas as idades
total_age = Person.objects.aggregate(Sum("age"))
print(total_age)

# Média de idades
avg_age = Person.objects.aggregate(Avg("age"))
print(avg_age)

# Menor idade
min_age = Person.objects.aggregate(Min("age"))
print(min_age)

# Maior idade
max_age = Person.objects.aggregate(Max("age"))
print(max_age)

Esses métodos são úteis para extrair informações como soma, média, mínimo e máximo, sem a necessidade de carregar todos os registros em memória.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com