Den Gesamtanteil der Frauen bestimmen
Du kannst auch Funktionen und Operatoren in einer einzelnen Select-Anweisung kombinieren.
Diese Kombinationen sind besonders praktisch, wenn du Prozentsätze oder
Durchschnitte berechnen willst. Außerdem können wir den Ausdruck case() verwenden,
um Daten zu verarbeiten, die bestimmte Kriterien erfüllen, ohne die Abfrage insgesamt zu beeinflussen.
Der Ausdruck case() nimmt eine Liste von Bedingungen entgegen, die geprüft werden, sowie die Spalte, die
zurückgegeben wird, wenn die Bedingung zutrifft, gefolgt von einem else_, wenn keine der Bedingungen
zutrifft. Wir können diesen gesamten Ausdruck in jede beliebige Funktion oder mathematische Operation einbetten.
Wenn wir ganzzahlige Divisionen durchführen, wollen wir oft einen Float zurückbekommen. Manche Datenbanken
erledigen das automatisch, aber du kannst die Funktion cast() verwenden, um einen
Ausdruck in einen bestimmten Typ zu konvertieren.
Diese Übung ist Teil des Kurses
Einführung in Datenbanken mit Python
Anleitung zur Übung
- Importiere
case,castundFloataussqlalchemy. - Baue einen Ausdruck
female_pop2000, um die weibliche Bevölkerung im Jahr 2000 zu berechnen. So gehst du vor:- Verwende
case()innerhalb vonfunc.sum(). - Das erste Argument von
case()ist eine Liste, die ein Tupel enthält mit- i) Einer Booleschen Prüfung, dass
census.columns.sexgleich'F'ist. - ii) Der Spalte
census.columns.pop2000.
- i) Einer Booleschen Prüfung, dass
- Das zweite Argument ist die
else_-Bedingung, die auf 0 gesetzt werden soll.
- Verwende
- Berechne die Gesamtbevölkerung im Jahr 2000 und verwende
cast(), um sie inFloatzu konvertieren. - Erstelle eine Abfrage, um den prozentualen Anteil von Frauen im Jahr 2000 zu berechnen. Teile dafür
female_pop2000durchtotal_pop2000und multipliziere mit100. - Führe die Abfrage aus und gib
percent_femaleaus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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(____)