การคำนวณผลต่างระหว่างสองคอลัมน์
บ่อยครั้งที่ต้องทำการคำนวณทางคณิตศาสตร์เป็นส่วนหนึ่งของคิวรี เช่น การหาการเปลี่ยนแปลงของจำนวนประชากรระหว่างปี 2000 ถึง 2008 สำหรับการคำนวณตัวเลข ตัวดำเนินการใน SQLAlchemy ทำงานเช่นเดียวกับใน Python
สามารถใช้ตัวดำเนินการเหล่านี้สำหรับการบวก (+), การลบ (-), การคูณ (*), การหาร (/), และโมดูลัส (%) ได้ หมายเหตุ: ตัวดำเนินการเหล่านี้จะทำงานแตกต่างออกไปเมื่อใช้กับคอลัมน์ที่ไม่ใช่ตัวเลข
มาหา 5 รัฐที่มีการเติบโตของประชากรสูงสุดระหว่างปี 2000 ถึง 2008 กัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้นสำหรับฐานข้อมูล
คำแนะนำการฝึกหัด
- กำหนดคำสั่ง select ชื่อ
stmtเพื่อดึงข้อมูลต่อไปนี้:- i) คอลัมน์ state ของตาราง
census(census.columns.state) - ii) ผลต่างของจำนวนประชากรระหว่างปี 2008 (
census.columns.pop2008) และปี 2000 (census.columns.pop2000) โดยตั้งชื่อว่า'pop_change'
- i) คอลัมน์ state ของตาราง
- จัดกลุ่มคำสั่งตาม
census.columns.state - เรียงลำดับคำสั่งตามการเปลี่ยนแปลงของประชากร (
'pop_change') จากมากไปน้อย โดยส่งdesc('pop_change')เข้าไป - ใช้เมธอด
.limit()กับคำสั่งก่อนหน้าเพื่อดึงข้อมูลเพียง 5 รายการ - รันคำสั่งและดึงข้อมูลทั้งหมดด้วย
fetchall() - คำสั่ง print ถูกเขียนไว้ให้แล้ว ส่งคำตอบเพื่อดูผลลัพธ์!
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Build query to return state names by population difference from 2008 to 2000: stmt
stmt = select([____, (____-____).label(____)])
# Append group by for the state: stmt_grouped
stmt_grouped = stmt.group_by(____)
# Append order by for pop_change descendingly: stmt_ordered
stmt_ordered = stmt_grouped.order_by(____)
# Return only 5 results: stmt_top5
stmt_top5 = ____
# Use connection to execute stmt_top5 and fetch all results
results = connection.execute(____).fetchall()
# Print the state and population change for each record
for result in results:
print('{}:{}'.format(result.state, result.pop_change))