計算女性的整體百分比
你也可以在同一個 select 陳述式中同時使用函式與運算子。
這樣的組合在要計算百分比或平均值時特別好用;我們也能使用 case() 運算式,只針對符合特定條件的資料進行運算,同時不影響整體查詢。
case() 運算式會接受一組條件清單與在條件成立時要回傳的欄位,最後則是當沒有任何條件符合時的 else_。我們可以把整個運算式包在任何想用的函式或數學運算裡。
在進行整數相除時,經常希望回傳浮點數。雖然有些資料庫會自動這麼做,你也可以使用 cast() 函式,將運算式轉換為特定型別。
本練習屬於課程
Python 資料庫入門
練習說明
- 從
sqlalchemy匯入case、cast和Float。 - 建立運算式
female_pop2000以計算 2000 年的女性人口。作法如下:- 在
func.sum()內使用case()。 case()的第一個引數是一個清單,內含一個 tuple,包含:- i) 檢查
census.columns.sex是否等於'F'的布林值。 - ii) 欄位
census.columns.pop2000。
- i) 檢查
- 第二個引數是
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(____)