Začněte nyníZačněte zdarma

Výpočet celkového podílu žen

V rámci jednoho příkazu select je možné kombinovat funkce i operátory. Taková kombinace se hodí zejména při výpočtu procent nebo průměrů. K práci s daty splňujícími konkrétní podmínky — aniž by to ovlivnilo celý dotaz — můžeš využít výraz case(). Výraz case() přijímá seznam podmínek a sloupec, který se vrátí při splnění dané podmínky, a dále else_ pro případ, kdy žádná z podmínek splněna není. Celý tento výraz pak můžeš obalit libovolnou funkcí nebo matematickou operací.

Při dělení celých čísel často potřebuješ získat výsledek jako desetinné číslo. Některé databáze to sice dělají automaticky, ale vždy můžeš použít funkci cast(), která převede výraz na požadovaný datový typ.

Toto cvičení je součástí kurzu

Introduction to Databases in Python

Zobrazit kurz

Pokyny k cvičení

  • Importuj case, cast a Float z sqlalchemy.
  • Sestav výraz female_pop2000 pro výpočet počtu žen v roce 2000. Postupuj takto:
    • Použij case() uvnitř func.sum().
    • Prvním argumentem case() je seznam obsahující n-tici s:
      • i) Logickou podmínkou ověřující, že census.columns.sex se rovná 'F'.
      • ii) Sloupcem census.columns.pop2000.
    • Druhým argumentem je podmínka else_, kterou nastav na 0.
  • Vypočítej celkový počet obyvatel v roce 2000 a pomocí cast() ho převeď na typ Float.
  • Sestav dotaz pro výpočet podílu žen v roce 2000: vyděl female_pop2000 hodnotou total_pop2000 a výsledek vynásob 100.
  • Dotaz spusť a vypiš percent_female.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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(____)
Upravit a spustit kód