Đếm dữ liệu duy nhất
Như đã đề cập trong video, mô-đun func của SQLAlchemy cung cấp quyền truy cập vào các hàm SQL dựng sẵn, giúp các thao tác như đếm và tính tổng nhanh và hiệu quả hơn.
Trong video, Jason dùng func.sum() để lấy tổng của cột pop2008 trong census như dưới đây:
select([func.sum(census.columns.pop2008)])
Nếu bạn muốn đếm số lượng giá trị trong pop2008, bạn có thể dùng func.count() như sau:
select([func.count(census.columns.pop2008)])
Hơn nữa, nếu bạn chỉ muốn đếm các giá trị distinct của pop2008, bạn có thể dùng phương thức .distinct():
select([func.count(census.columns.pop2008.distinct())])
Trong bài tập này, bạn sẽ luyện tập dùng func.count() và .distinct() để lấy số lượng bang khác nhau trong census.
Đến giờ, bạn đã thấy .fetchall(), .fetchmany(), và .first() được dùng trên ResultProxy để lấy kết quả. ResultProxy cũng có một phương thức gọi là .scalar() để lấy duy nhất giá trị của một truy vấn chỉ trả về một hàng và một cột.
Điều này rất hữu ích khi bạn chỉ cần truy vấn một giá trị đếm hoặc tổng.
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
- Xây dựng câu lệnh
selectđể đếm các giá trị distinct trong trườngstatecủacensus. - Thực thi
stmtđể lấy kết quả đếm và lưu vàodistinct_state_count. - In giá trị của
distinct_state_count.
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.
# 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(____)