始める無料で始める

女性の全体割合を求める

単一の SELECT ステートメント内で、関数や演算子を組み合わせることも可能です。 この組み合わせは、割合や平均を計算したいときに非常に便利です。また、case() 式を使えば、特定の条件を満たすデータに対してのみ処理を行い、クエリ全体には影響を与えないようにできます。 case() 式は、一致させたい条件のリストと、その条件が一致した場合に返す列を受け取り、どの条件にも一致しなかった場合の else_ を続けます。この式全体は、任意の関数や数式で包むことができます。

整数同士の除算を行うとき、結果を小数で受け取りたい場面はよくあります。データベースによっては自動で行われますが、cast() 関数を使って、式を特定の型に変換できます。

この演習はコースの一部です

Pythonで学ぶデータベース入門

コースを見る

演習の手順

  • sqlalchemy から casecastFloat をインポートします。
  • 2000 年の女性人口を計算する式 female_pop2000 を作成します。次のように進めます。
    • func.sum() の中で case() を使います。
    • case() の第 1 引数は、次のタプルを含むリストにします。
      • i) census.columns.sex'F' に等しいかを確認するブール式。
      • ii) 列 census.columns.pop2000
    • 第 2 引数は else_ 条件で、0 に設定します。
  • 2000 年の総人口を計算し、cast() を使って Float に変換します。
  • 2000 年の女性の割合を計算するクエリを作成します。female_pop2000total_pop2000 で割り、100 を掛けます。
  • クエリを実行し、percent_female を出力します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# 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(____)
コードを編集して実行