開始使用免費開始

計算女性的整體百分比

你也可以在同一個 select 陳述式中同時使用函式與運算子。 這樣的組合在要計算百分比或平均值時特別好用;我們也能使用 case() 運算式,只針對符合特定條件的資料進行運算,同時不影響整體查詢。 case() 運算式會接受一組條件清單與在條件成立時要回傳的欄位,最後則是當沒有任何條件符合時的 else_。我們可以把整個運算式包在任何想用的函式或數學運算裡。

在進行整數相除時,經常希望回傳浮點數。雖然有些資料庫會自動這麼做,你也可以使用 cast() 函式,將運算式轉換為特定型別。

本練習屬於課程

Python 資料庫入門

檢視課程

練習說明

  • sqlalchemy 匯入 casecastFloat
  • 建立運算式 female_pop2000 以計算 2000 年的女性人口。作法如下:
    • func.sum() 內使用 case()
    • case() 的第一個引數是一個清單,內含一個 tuple,包含:
      • i) 檢查 census.columns.sex 是否等於 'F' 的布林值。
      • ii) 欄位 census.columns.pop2000
    • 第二個引數是 else_ 條件,應設為 0。
  • 計算 2000 年的總人口,並使用 cast() 將其轉換為 Float
  • 建立查詢以計算 2000 年女性的百分比。做法是用 female_pop2000 除以 total_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(____)
編輯並執行程式碼