Zliczanie unikalnych danych
Jak wspomniano w filmie, moduł func biblioteki SQLAlchemy daje dostęp do wbudowanych
funkcji SQL, które mogą przyspieszyć i usprawnić operacje takie jak zliczanie czy sumowanie.
W filmie Jason użył func.sum(), aby obliczyć sumę kolumny pop2008 tabeli census:
select([func.sum(census.columns.pop2008)])
Jeśli zamiast tego chcesz zliczyć wartości w kolumnie pop2008, możesz użyć func.count():
select([func.count(census.columns.pop2008)])
Co więcej, jeśli zależy ci tylko na zliczeniu unikalnych wartości pop2008, skorzystaj z metody .distinct():
select([func.count(census.columns.pop2008.distinct())])
W tym ćwiczeniu przećwiczysz użycie func.count() oraz .distinct(), aby policzyć liczbę unikalnych stanów w tabeli census.
Do tej pory poznałeś metody .fetchall(), .fetchmany() i .first() wywoływane na obiekcie ResultProxy w celu pobrania wyników. ResultProxy udostępnia też metodę .scalar(), która zwraca pojedynczą wartość z zapytania wynikającego w dokładnie jednym wierszu i jednej kolumnie.
Przydaje się to szczególnie wtedy, gdy zapytanie zwraca tylko liczbę lub sumę.
To ćwiczenie jest częścią kursu
Wprowadzenie do baz danych w Pythonie
Instrukcje do ćwiczenia
- Zbuduj instrukcję
select, która zliczy unikalne wartości w polustatetabelicensus. - Wykonaj
stmt, aby pobrać wynik, i zapisz go jakodistinct_state_count. - Wyświetl wartość
distinct_state_count.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(____)