Räkna distinkta värden
Som nämndes i videon ger SQLAlchemys func-modul tillgång till inbyggda
SQL-funktioner som kan göra operationer som att räkna och summera snabbare och mer effektiva.
I videon använde Jason func.sum() för att beräkna summan av kolumnen pop2008 i census enligt nedan:
select([func.sum(census.columns.pop2008)])
Om du i stället vill räkna antalet värden i pop2008 kan du använda func.count() så här:
select([func.count(census.columns.pop2008)])
Om du dessutom bara vill räkna de distinkta värdena i pop2008 kan du använda metoden .distinct():
select([func.count(census.columns.pop2008.distinct())])
I den här övningen får du träna på att använda func.count() och .distinct() för att räkna antalet unika stater i census.
Hittills har du sett .fetchall(), .fetchmany() och .first() användas på ett ResultProxy för att hämta resultat. ResultProxy har också en metod som heter .scalar(), som används för att hämta bara värdet från en fråga som returnerar en enda rad och kolumn.
Detta kan vara mycket användbart när du frågar efter ett enkelt antal eller en summa.
Den här övningen är en del av kursen
Introduktion till databaser i Python
Övningsinstruktioner
- Bygg en
select-sats för att räkna de distinkta värdena i fältetstateicensus. - Kör
stmtför att hämta antalet och lagra resultatet somdistinct_state_count. - Skriv ut värdet av
distinct_state_count.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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(____)