1. 学ぶ
  2. /
  3. コース
  4. /
  5. Pythonで学ぶデータベース入門

Connected

演習

重複しないデータのカウント

動画でも説明したとおり、SQLAlchemy の func モジュールを使うと、カウントや合計といった組み込みの SQL 関数にアクセスでき、処理を高速かつ効率的にできます。

動画では、Jason が census の pop2008 列の合計を求めるために func.sum() を使いました。次のとおりです。

select([func.sum(census.columns.pop2008)])

代わりに、pop2008 の値の数を数えるには、次のように func.count() を使えます。

select([func.count(census.columns.pop2008)])

さらに、pop2008 の重複しない値だけを数えたい場合は、.distinct() メソッドを使います。

select([func.count(census.columns.pop2008.distinct())])

この演習では、func.count() と .distinct() を使って、census に含まれる重複しない州の数を数える練習をします。

ここまでで、結果を取得するために ResultProxy に対して .fetchall()、.fetchmany()、.first() を使う方法を見てきました。ResultProxy には、1 行 1 列のみを返すクエリの値だけを取得するための .scalar() というメソッドもあります。

これは、カウントや合計だけを問い合わせる場合にとても便利です。

指示

100 XP
  • census の state フィールドにある重複しない値を数えるための select 文を作成します。
  • stmt を実行してカウントを取得し、結果を distinct_state_count に保存します。
  • distinct_state_count の値を表示してください。