始める無料で始める

州ごとの人口合計を求める

count_1 のようなクエリ結果の列名で混乱しないよう、.label() メソッドで結果列に名前を付けられます。これは使用する関数メソッドに続けて指定し、引数に付けたい名前を渡します。

func.sum().group_by() を組み合わせることで、State ごとの人口合計を取得し、さらに label() メソッドで出力列に名前を付けられます。

また、select 文で使う前に func.sum() の式を先に作成することもできます。select 文の中で書くのと同じ要領で式を作って変数に保存し、その変数を本来 func.sum() を書く位置で使用します。

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

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

コースを見る

演習の手順

  • sqlalchemy から func をインポートします。
  • pop2008 フィールドの値の合計を計算し、'population' というラベルを付ける式を作成します。
  • state フィールドの値と、pop2008 の合計を取得するための select 文を作成します。
  • .group_by() メソッドを使って、文を state でグループ化します。
  • connection を使って stmt を実行し、結果を results に保存します。
  • results[0].keys() を使って返された結果のキー/列名を出力します。

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

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

# Import func
____

# Build an expression to calculate the sum of pop2008 labeled as population
pop2008_sum = func.sum(____).label(____)

# Build a query to select the state and sum of pop2008: stmt
stmt = select([____, ____])

# Group stmt by state
stmt = stmt.group_by(____)

# Execute the statement and store all the records: results
results = connection.execute(____).fetchall()

# Print results
print(results)

# Print the keys/column names of the results returned
print(____)
コードを編集して実行