Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Bygg en select-sats för att räkna de distinkta värdena i fältet state i census.
  • Kör stmt för att hämta antalet och lagra resultatet som distinct_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(____)
Redigera och kör kod