假设有一个名为 students
的表,包含字段 student_id、
student_name
、score
现在要查询成绩大于等于 80 分的学生信息以及所有学生的平均成绩。
WITH high_score_students AS (
SELECT student_id, student_name, score
FROM students
WHERE score >= 80
)
SELECT hss.student_id, hss.student_name, hss.score, AVG(s.score) AS average_score
FROM high_score_students hss
JOIN students s ON 1 = 1 -- 这里只是为了计算所有学生的平均成绩,可以根据实际情况调整连接条件
GROUP BY hss.student_id, hss.student_name, hss.score;
在这个例子中,首先使用 WITH
子句定义了一个名为 high_score_students
的 CTE,它从 students
表中筛选出成绩大于等于 80 分的学生信息。然后在主查询中,使用这个 CTE 以及原始的 students
表来计算成绩大于等于 80 分的学生信息和所有学生的平均成绩。