可以使用子查询来实现将查询结果再次进行聚合操作,具体语法如下:
SELECT [聚合函数](子查询结果) FROM (原始查询语句) AS 别名;
其中,子查询是用来获取需要进行聚合操作的数据集的,原始查询语句是用来获取子查询中的数据集的。
举个例子,假设我们有一个学生成绩表 score 包含三个字段:id、name 和 score。现在我们要求出每个学生最高分数和最低分数的平均值。可以使用以下 SQL 查询语句实现:
SELECT AVG(max_min_score) FROM (
SELECT MAX(score) + MIN(score) AS max_min_score FROM score GROUP BY name
) AS tmp;
解释一下上述 SQL 查询语句:
- 内层查询
SELECT MAX(score) + MIN(score) AS max_min_score FROM score GROUP BY name用于获取每个学生最高分数和最低分数之和,并将其命名为max_min_score。 - 外层查询
SELECT AVG(max_min_score) FROM (...) AS tmp用于计算所有学生最高分数和最低分数之和的平均值。
这样就能够实现将查询结果再次进行聚合操作了。




