Skip to content

30 Days SQL ChallengeHọc SQL mỗi ngày một bài, từ SELECT đến tối ưu truy vấn

Khóa học của HCMUTE Developer Student Club. Một hệ quản trị (PostgreSQL 16), một bộ dữ liệu chung, mọi ví dụ đều chạy được và mọi bài tập đều có đáp án.

sql_challenge=#
SELECT c.name AS danh_muc,
       SUM(oi.quantity * oi.unit_price
           * (1 - oi.discount)) AS doanh_thu
FROM order_items oi
JOIN orders o     USING (order_id)
JOIN products p   USING (product_id)
JOIN categories c USING (category_id)
WHERE o.status NOT IN ('pending', 'cancelled')
GROUP BY c.name
ORDER BY doanh_thu DESC
LIMIT 3;
danh_mucdoanh_thu
Điện thoại135.492.500
Laptop gaming135.151.000
Laptop văn phòng104.700.500
(3 rows) · Ngày 10: Kết hợp nhiều bảng với JOIN

Bắt đầu trong 3 bước

Cần cài sẵn Docker Desktop. Không dùng Docker? Xem cách cài PostgreSQL trực tiếp.

  1. 1

    Lấy repo về

    git clone https://github.com/hcmute-dsc/sql-challenge.git
    cd sql-challenge
  2. 2

    Dựng database

    docker compose up -d
  3. 3

    Mở và gõ SQL

    docker compose exec db psql -U postgres -d sql_challenge
    # hoặc Adminer: http://localhost:8080

Lộ trình 30 ngày

Học theo thứ tự, mỗi ngày một bài. Bắt đầu từ lộ trình tổng quan, kết thúc bằng dự án cuối khóa.

Bộ dữ liệu DSC Shop

Một cửa hàng đồ công nghệ với 7 bảng, dùng xuyên suốt 30 ngày. Dữ liệu cố ý có NULL, tên thành phố viết lộn xộn, khách trùng tên, khách chưa mua lần nào, để bạn gặp đúng những cái bẫy của dữ liệu thật.

  • categoriesDanh mục dạng cây
  • productsSản phẩm, thông số JSONB
  • customersKhách hàng, có NULL
  • employeesNhân viên dạng cây
  • orders40 đơn, 01/2025 đến 10/2026
  • order_itemsDòng hàng của đơn
  • paymentsThanh toán, có trả góp
Xem chi tiết bộ dữ liệu →
Sơ đồ ERD của DSC Shop: 7 bảng categories, products, customers, employees, orders, order_items, payments và các khóa ngoại nối chúng

Học xong, tự xây một database thật

Dự án cuối khóa: thiết kế ERD, dựng schema chuẩn 3NF, viết truy vấn báo cáo, transaction, view, trigger, tối ưu bằng EXPLAIN và một API nhỏ an toàn trước SQL injection. Chấm theo rubric 100 điểm.

Xem đề dự án

Phát hành theo giấy phép MIT.