Tận dụng functions và group_by với dữ liệu phân cấp
Bạn cũng thường sẽ cần tổng hợp (roll up) dữ liệu trong một bảng có cấu trúc phân cấp. Khi tổng hợp dữ liệu, bạn cần cẩn thận chọn đúng bí danh để thực hiện group_by và chọn đúng bảng để áp dụng hàm.
Nhiệm vụ ở đây là đếm số nhân viên theo từng quản lý.
Bài tập này là một phần của khóa học
Nhập môn Cơ sở dữ liệu với Python
Hướng dẫn bài tập
- Lưu một bí danh của bảng
employeeslàmanagers. - Xây dựng truy vấn chọn cột
namecủa bảngmanagersvà số lượng nhân viên của họ. Hàmfunc.count()đã được nhập và sẽ hữu ích! Dùng hàm này để đếm cộtidcủa bảngemployees. - Dùng mệnh đề
.where()để lọc các bản ghi trong đó cộtidcủa bảngmanagersbằng với cộtmgrcủa bảngemployees. - Group truy vấn theo cột
namecủa bảngmanagers. - Thực thi câu lệnh và lưu toàn bộ kết quả. In tên các quản lý và số nhân viên của họ. Đoạn mã này đã được viết sẵn nên hãy Gửi câu trả lời để xem kết quả!
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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)