การคำนวณร้อยละของผู้หญิงโดยรวม
เราสามารถรวมฟังก์ชันและตัวดำเนินการไว้ใน select statement เดียวกันได้
ซึ่งมีประโยชน์มากเมื่อต้องการคำนวณร้อยละหรือค่าเฉลี่ย นอกจากนี้ยังสามารถใช้นิพจน์ case() เพื่อประมวลผลเฉพาะข้อมูลที่ตรงตามเงื่อนไขที่กำหนด โดยไม่กระทบกับคิวรีโดยรวม
นิพจน์ case() รับรายการเงื่อนไขที่ต้องการตรวจสอบและคอลัมน์ที่จะคืนค่าเมื่อเงื่อนไขเป็นจริง ตามด้วย else_ สำหรับกรณีที่ไม่ตรงกับเงื่อนไขใดเลย เราสามารถนำนิพจน์ทั้งหมดนี้ไปใช้ร่วมกับฟังก์ชันหรือการดำเนินการทางคณิตศาสตร์ใดก็ได้
ในการหารจำนวนเต็ม หากต้องการให้ผลลัพธ์เป็นทศนิยม บางฐานข้อมูลจะจัดการให้โดยอัตโนมัติ แต่คุณยังสามารถใช้ฟังก์ชัน cast() เพื่อแปลงนิพจน์ให้เป็นชนิดข้อมูลที่ต้องการได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้นสำหรับฐานข้อมูล
คำแนะนำการฝึกหัด
- Import
case,castและFloatจากsqlalchemy - สร้างนิพจน์
female_pop2000เพื่อคำนวณจำนวนประชากรผู้หญิงในปี 2000 โดยทำดังนี้:- ใช้
case()ภายในfunc.sum() - อาร์กิวเมนต์แรกของ
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(____)