Tải nhiều bảng bằng phép JOIN

Nạp dữ liệu gọn nhẹ với pandas

Amany Mahfouz

Instructor

Khóa (Keys)

  • Bản ghi có định danh duy nhất (key)

Dữ liệu cuộc gọi 311, làm nổi bật cột unique_key. Key là số.

Nạp dữ liệu gọn nhẹ với pandas

Khóa (Keys)

  • Bản ghi có định danh duy nhất (key)

Dữ liệu danh mục khóa học, làm nổi bật cột course_code. Mã gồm viết tắt môn và số.

Nạp dữ liệu gọn nhẹ với pandas

Khóa (Keys)

  • Bản ghi có định danh duy nhất (key)

Dữ liệu danh mục khóa học, làm nổi bật cột instructor_id. Giá trị là số nguyên 9 chữ số.

Nạp dữ liệu gọn nhẹ với pandas

Khóa (Keys)

Bảng Professor, làm nổi bật cột id. Giá trị là số nguyên 9 chữ số như instructor_id trong danh mục khóa học.

Nạp dữ liệu gọn nhẹ với pandas

Khóa (Keys)

Dữ liệu danh mục khóa học đã JOIN thêm cột tên giảng viên

Nạp dữ liệu gọn nhẹ với pandas

JOIN các bảng

Dữ liệu thời tiết, làm nổi bật cột date

Dữ liệu cuộc gọi 311, làm nổi bật cột created_date

Nạp dữ liệu gọn nhẹ với pandas

JOIN các bảng

SELECT *
  FROM hpd311calls
Nạp dữ liệu gọn nhẹ với pandas

JOIN các bảng

SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date;
  • Dùng ký pháp dấu chấm (table.column) khi làm với nhiều bảng
  • JOIN mặc định chỉ trả về bản ghi có khóa xuất hiện ở cả hai bảng
  • Đảm bảo khóa JOIN cùng kiểu dữ liệu, nếu không sẽ không khớp
Nạp dữ liệu gọn nhẹ với pandas

JOIN và lọc

/* Chỉ lấy cuộc gọi về HEAT/HOT WATER và JOIN dữ liệu thời tiết */
SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date
 WHERE hpd311calls.complaint_type = 'HEAT/HOT WATER';
Nạp dữ liệu gọn nhẹ với pandas

JOIN và tổng hợp

/* Đếm số cuộc gọi theo quận (borough) */
SELECT hpd311calls.borough, 
         COUNT(*)
  FROM hpd311calls
 GROUP BY hpd311calls.borough;
Nạp dữ liệu gọn nhẹ với pandas

JOIN và tổng hợp

/* Đếm số cuộc gọi theo quận
   và JOIN dân số, số căn hộ */
SELECT hpd311calls.borough, 
       COUNT(*), 
       boro_census.total_population,
       boro_census.housing_units
  FROM hpd311calls
 GROUP BY hpd311calls.borough
Nạp dữ liệu gọn nhẹ với pandas

JOIN và tổng hợp

/* Đếm số cuộc gọi theo quận
   và JOIN dân số, số căn hộ */
SELECT hpd311calls.borough, 
       COUNT(*), 
       boro_census.total_population,
       boro_census.housing_units
  FROM hpd311calls
       JOIN boro_census 
       ON hpd311calls.borough = boro_census.borough
 GROUP BY hpd311calls.borough;
Nạp dữ liệu gọn nhẹ với pandas
query = """SELECT hpd311calls.borough, 
                    COUNT(*), 
                    boro_census.total_population,
                    boro_census.housing_units
             FROM hpd311calls
                  JOIN boro_census 
                  ON hpd311calls.borough = boro_census.borough
            GROUP BY hpd311calls.borough;"""

call_counts = pd.read_sql(query, engine)
print(call_counts)
         borough  COUNT(*)  total_population  housing_units
0          BRONX     29874           1455846         524488
1       BROOKLYN     31722           2635121        1028383
2      MANHATTAN     20196           1653877         872645
3         QUEENS     11384           2339280         850422
4  STATEN ISLAND      1322            475948         179179
Nạp dữ liệu gọn nhẹ với pandas

Ôn tập

  • Thứ tự từ khóa SQL
    • SELECT
    • FROM
    • JOIN
    • WHERE
    • GROUP BY
Nạp dữ liệu gọn nhẹ với pandas

Ayo berlatih!

Nạp dữ liệu gọn nhẹ với pandas

Preparing Video For Download...