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
Instruções do exercício
- Construa uma instrução
selectpara contar os valores distintos no campostatedecensus. - Execute
stmtpara obter a contagem e armazene o resultado comodistinct_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(____)