Tính tổng dân số theo từng bang
Để tránh nhầm lẫn với tên cột của kết quả truy vấn như count_1, bạn có thể dùng phương thức .label() để đặt tên cho cột kết quả. Tên này được gắn thêm vào phương thức hàm bạn đang dùng, và đối số chính là tên bạn muốn đặt.
Ta có thể kết hợp func.sum() với .group_by() để lấy tổng dân số theo State và dùng phương thức label() để đặt tên cho đầu ra.
Bạn cũng có thể tạo biểu thức func.sum() trước khi dùng trong mệnh đề select. Cách làm giống hệt như khi viết trong câu lệnh select và lưu nó vào một biến. Sau đó dùng biến đó trong câu lệnh select ở vị trí mà bình thường bạn sẽ đặt func.sum().
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
- Import
functừsqlalchemy. - Xây dựng một biểu thức để tính tổng các giá trị trong trường
pop2008và gắn nhãn là'population'. - Tạo câu lệnh select để lấy giá trị của trường
statevà tổng các giá trị trongpop2008. - Nhóm câu lệnh theo
statebằng phương thức.group_by(). - Thực thi
stmtbằngconnectionđể lấy kết quả và lưu vàoresults. - In ra các khóa/tên cột của kết quả trả về bằng
results[0].keys().
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.
# Import func
____
# Build an expression to calculate the sum of pop2008 labeled as population
pop2008_sum = func.sum(____).label(____)
# Build a query to select the state and sum of pop2008: stmt
stmt = select([____, ____])
# Group stmt by state
stmt = stmt.group_by(____)
# Execute the statement and store all the records: results
results = connection.execute(____).fetchall()
# Print results
print(results)
# Print the keys/column names of the results returned
print(____)