Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaimportuj case, cast oraz Float z sqlalchemy.
  • Zbuduj wyrażenie female_pop2000, które oblicza liczbę kobiet w 2000 roku. W tym celu:
    • Użyj case() wewnątrz func.sum().
    • Pierwszym argumentem case() jest lista zawierająca krotkę złożoną z:
      • i) wyrażenia logicznego sprawdzającego, czy census.columns.sex jest równe 'F',
      • ii) kolumny census.columns.pop2000.
    • Drugi argument to warunek else_, który należy ustawić na 0.
  • Oblicz łączną liczbę ludności w 2000 roku i użyj cast(), aby przekonwertować ją na typ Float.
  • Zbuduj zapytanie obliczające odsetek kobiet w 2000 roku: podziel female_pop2000 przez total_pop2000 i pomnóż przez 100.
  • 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(____)
Edytuj i uruchom kod