การนับค่าที่ไม่ซ้ำกัน
อย่างที่กล่าวถึงในวิดีโอ โมดูล func ของ SQLAlchemy ช่วยให้เข้าถึงฟังก์ชัน SQL ที่มีในตัวได้ ซึ่งทำให้การดำเนินการต่างๆ เช่น การนับและการหาผลรวมทำได้รวดเร็วและมีประสิทธิภาพยิ่งขึ้น
ในวิดีโอ Jason ใช้ func.sum() เพื่อหาผลรวมของคอลัมน์ pop2008 ในตาราง census ดังนี้:
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
จนถึงตอนนี้ เราได้เห็นการใช้ .fetchall(), .fetchmany() และ .first() กับ ResultProxy เพื่อดึงผลลัพธ์แล้ว นอกจากนี้ ResultProxy ยังมีเมธอดชื่อ .scalar() สำหรับดึงเฉพาะค่าจากคิวรีที่คืนผลลัพธ์เพียงหนึ่งแถวและหนึ่งคอลัมน์
เมธอดนี้มีประโยชน์มากเมื่อต้องการดึงผลลัพธ์ที่เป็นเพียงการนับหรือการหาผลรวม
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้นสำหรับฐานข้อมูล
คำแนะนำการฝึกหัด
- สร้าง
selectstatement เพื่อนับค่าที่ไม่ซ้ำกันในฟิลด์stateของตารางcensus - รัน
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(____)