ComeçarComece de graça

Contando dados distintos

Como mencionado no vídeo, o módulo func do SQLAlchemy dá acesso a funções SQL nativas que podem tornar operações como contar e somar mais rápidas e eficientes.

No vídeo, Jason usou func.sum() para obter a soma da coluna pop2008 de census, como mostrado abaixo:

select([func.sum(census.columns.pop2008)])

Se, em vez disso, você quiser contar a quantidade de valores em pop2008, pode usar func.count() assim:

select([func.count(census.columns.pop2008)])

Além disso, se você quiser contar apenas os valores distintos de pop2008, pode usar o método .distinct():

select([func.count(census.columns.pop2008.distinct())])

Neste exercício, você vai praticar o uso de func.count() e .distinct() para obter a contagem do número distinto de estados em census.

Até agora, você viu .fetchall(), .fetchmany() e .first() sendo usados em um ResultProxy para obter os resultados. O ResultProxy também tem um método chamado .scalar() para obter apenas o valor de uma consulta que retorna somente uma linha e uma coluna.

Isso pode ser muito útil quando você está consultando apenas uma contagem ou soma.

Este exercício faz parte do curso

Introdução a Bancos de Dados em Python

Ver curso

Instruções do exercício

  • Construa uma instrução select para contar os valores distintos no campo state de census.
  • Execute stmt para obter a contagem e armazene o resultado como distinct_state_count.
  • Imprima o valor de distinct_state_count.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Build a query to count the distinct states values: stmt
stmt = select([____])

# Execute the query and store the scalar result: distinct_state_count
distinct_state_count = connection.execute(____).scalar()

# Print the distinct_state_count
print(____)
Editar e executar o código