Bỏ qua

SQL nâng cao: Phân tích kết quả học tập

🟠 Quan trọng · SQL


Bảng dữ liệu

  • students(student_id, name, class)
  • scores(student_id, subject, score)

Query mẫu

WITH student_avg AS (
  SELECT student_id,
    AVG(score) AS avg_score,
    COUNT(DISTINCT subject) AS num_subjects
  FROM scores
  GROUP BY student_id
),
ranked AS (
  SELECT s.student_id, s.name, s.class,
    sa.avg_score, sa.num_subjects,
    RANK() OVER (ORDER BY sa.avg_score DESC) AS overall_rank,
    RANK() OVER (
      PARTITION BY s.class ORDER BY sa.avg_score DESC
    ) AS class_rank
  FROM students s
  JOIN student_avg sa ON s.student_id = sa.student_id
)
SELECT * FROM ranked;

Kỹ thuật chính

  • CTE tách từng bước (dễ đọc, dễ debug)
  • Window Function xếp hạng tổng thể và theo lớp
  • JOIN kết hợp thông tin

💡 Tip

Khi phỏng vấn, hãy hỏi rõ output mong muốn trước khi viết query. Điều này thể hiện tư duy phân tích.

Comments