開始使用免費開始

計算不重複的資料

如同影片所提,SQLAlchemy 的 func 模組可使用內建的 SQL 函式,讓像是計數與加總這類操作更快且更有效率。

在影片中,Jason 使用 func.sum() 取得 censuspop2008 欄位的「總和」,如下所示:

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 也有一個名為 .scalar() 的方法,適合用於只回傳單一列與單一欄的查詢,以直接取得其值。

這在你只是在查詢計數或加總時特別實用。

本練習屬於課程

Python 資料庫入門

檢視課程

練習說明

  • 建立一個 select 陳述式,用來「計算」censusstate 欄位中「不重複」值的數量。
  • 執行 stmt 取得計數,並將結果儲存為 distinct_state_count
  • 印出 distinct_state_count 的值。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Build a query to count the distinct states values: stmt
stmt = select([____])

# Execute the query and store the scalar result: distinct_state_count
distinct_state_count = connection.execute(____).scalar()

# Print the distinct_state_count
print(____)
編輯並執行程式碼