Obliczanie ogólnego odsetka kobiet
W pojedynczej instrukcji select można łączyć funkcje i operatory.
Takie połączenia są szczególnie przydatne, gdy chcemy obliczyć wartości procentowe lub
średnie. Można też użyć wyrażenia case(), aby operować na danych spełniających
określone kryteria, nie wpływając przy tym na całe zapytanie.
Wyrażenie case() przyjmuje listę warunków do sprawdzenia oraz kolumnę, która ma zostać
zwrócona, gdy warunek jest spełniony, a na końcu argument else_ – stosowany, gdy żaden
z warunków nie pasuje. Całe to wyrażenie można opakować w dowolną funkcję lub operację matematyczną.
Przy dzieleniu liczb całkowitych często chcemy otrzymać wynik zmiennoprzecinkowy. Choć niektóre bazy danych robią to automatycznie, można użyć funkcji cast(), aby jawnie przekonwertować wyrażenie na wybrany typ.
To ćwiczenie jest częścią kursu
Wprowadzenie do baz danych w Pythonie
Instrukcje do ćwiczenia
- Zaimportuj
case,castorazFloatzsqlalchemy. - Zbuduj wyrażenie
female_pop2000, które oblicza liczbę kobiet w 2000 roku. W tym celu:- Użyj
case()wewnątrzfunc.sum(). - Pierwszym argumentem
case()jest lista zawierająca krotkę złożoną z:- i) wyrażenia logicznego sprawdzającego, czy
census.columns.sexjest równe'F', - ii) kolumny
census.columns.pop2000.
- i) wyrażenia logicznego sprawdzającego, czy
- Drugi argument to warunek
else_, który należy ustawić na 0.
- Użyj
- Oblicz łączną liczbę ludności w 2000 roku i użyj
cast(), aby przekonwertować ją na typFloat. - Zbuduj zapytanie obliczające odsetek kobiet w 2000 roku: podziel
female_pop2000przeztotal_pop2000i pomnóż przez100. - Wykonaj zapytanie i wyświetl
percent_female.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# import case, cast and Float from sqlalchemy
from sqlalchemy import ____, ____, ____
# Build an expression to calculate female population in 2000
female_pop2000 = func.sum(
____([
(____ == ____, ____)
], else_=____))
# Cast an expression to calculate total population in 2000 to Float
total_pop2000 = cast(func.sum(____), ____)
# Build a query to calculate the percentage of women in 2000: stmt
stmt = select([____ / ____* 100])
# Execute the query and store the scalar result: percent_female
percent_female = connection.execute(____).scalar()
# Print the percentage
print(____)