การใช้ฟังก์ชันและ group_by กับข้อมูลแบบลำดับชั้น
การรวมข้อมูลที่อยู่ในตารางแบบลำดับชั้นเป็นสิ่งที่พบได้บ่อย การทำเช่นนี้ต้องระมัดระวังในการเลือก alias ที่ใช้สำหรับ group_by และตารางที่ใช้กับฟังก์ชัน
ในแบบฝึกหัดนี้ ให้นับจำนวนพนักงานของผู้จัดการแต่ละคน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Python เบื้องต้นสำหรับฐานข้อมูล
คำแนะนำการฝึกหัด
- บันทึก alias ของตาราง
employeesในชื่อmanagers - สร้างคิวรีเพื่อเลือกคอลัมน์
nameของตารางmanagersและจำนวนพนักงานที่อยู่ภายใต้การดูแล โดยสามารถใช้ฟังก์ชันfunc.count()ที่ import ไว้แล้วเพื่อนับคอลัมน์idของตารางemployees - ใช้คำสั่ง
.where()เพื่อกรองเฉพาะระเบียนที่คอลัมน์idของตารางmanagersมีค่าเท่ากับคอลัมน์mgrของตารางemployees - จัดกลุ่มคิวรีตามคอลัมน์
nameของตารางmanagers - รันคำสั่งและเก็บผลลัพธ์ทั้งหมด แล้วพิมพ์ชื่อผู้จัดการพร้อมจำนวนพนักงาน โค้ดส่วนนี้เขียนไว้ให้แล้ว กด ส่งคำตอบ เพื่อดูผลลัพธ์ได้เลย
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Make an alias of the employees table: managers
managers = ____
# Build a query to select names of managers and counts of their employees: stmt
stmt = select([____, func.count(____)])
# Append a where clause that ensures the manager id and employee mgr are equal
stmt_matched = stmt.____
# Group by Managers Name
stmt_grouped = stmt_matched.group_by(____)
# Execute statement: results
results = connection.execute(stmt_grouped).fetchall()
# print manager
for record in results:
print(record)