Bắt đầu ngayBắt đầu miễn phí

Xác định tỷ lệ phụ nữ tổng thể

Bạn có thể kết hợp các hàm và toán tử trong cùng một câu lệnh select. Những kết hợp này đặc biệt hữu ích khi muốn tính phần trăm hoặc trung bình, và bạn cũng có thể dùng biểu thức case() để thao tác trên dữ liệu thỏa điều kiện cụ thể mà không ảnh hưởng đến toàn bộ truy vấn. Biểu thức case() nhận một danh sách các điều kiện cần khớp và cột sẽ trả về nếu điều kiện khớp, theo sau là else_ nếu không có điều kiện nào khớp. Ta có thể bọc toàn bộ biểu thức này trong bất kỳ hàm hoặc phép toán nào.

Khi thực hiện phép chia số nguyên, ta thường muốn nhận về số thực (float). Dù một số cơ sở dữ liệu làm điều này tự động, bạn có thể dùng hàm cast() để chuyển một biểu thức sang kiểu cụ thể.

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

Xem khóa học

Hướng dẫn bài tập

  • Import case, castFloat từ sqlalchemy.
  • Xây dựng biểu thức female_pop2000 để tính dân số nữ năm 2000. Để làm điều này:
    • Dùng case() bên trong func.sum().
    • Đối số thứ nhất của case() là một danh sách chứa một tuple gồm
      • i) Một biểu thức boolean kiểm tra census.columns.sex bằng 'F'.
      • ii) Cột census.columns.pop2000.
    • Đối số thứ hai là điều kiện else_, đặt bằng 0.
  • Tính tổng dân số năm 2000 và dùng cast() để chuyển sang Float.
  • Xây dựng truy vấn để tính phần trăm phụ nữ năm 2000. Thực hiện bằng cách lấy female_pop2000 chia cho total_pop2000 rồi nhân 100.
  • Thực thi truy vấn và in percent_female.

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 case, cast and Float from sqlalchemy
from sqlalchemy import ____, ____, ____

# Build an expression to calculate female population in 2000
female_pop2000 = func.sum(
    ____([
        (____ == ____, ____)
    ], else_=____))

# Cast an expression to calculate total population in 2000 to Float
total_pop2000 = cast(func.sum(____), ____)

# Build a query to calculate the percentage of women in 2000: stmt
stmt = select([____ / ____* 100])

# Execute the query and store the scalar result: percent_female
percent_female = connection.execute(____).scalar()

# Print the percentage
print(____)
Chỉnh sửa và Chạy Mã