ZBLOG

mysql 将查询出来的结果表再次进行聚合操作 语句该怎么写?

如果你需要对查询出来的结果表再次进行聚合操作,可以使用嵌套子查询的方式实现。具体语法如下:

SELECT [聚合函数](子查询结果) FROM (
    SELECT ... FROM ... WHERE ...
) AS 别名 GROUP BY ...

其中,内层 SELECT 语句用于获取需要进行聚合操作的数据集,外层 SELECT 语句用于对内层查询的结果进行聚合操作。需要注意的是,在外层 SELECT 语句中必须要有 GROUP BY 子句。

举个例子,假设我们有一个学生成绩表 score 包含三个字段:idnamescore。现在我们要求出每个学生最高分数和最低分数的平均值,并按照性别进行分组。可以使用以下 SQL 查询语句实现:

SELECT gender, AVG(max_min_score) FROM (
    SELECT name, gender, MAX(score) + MIN(score) AS max_min_score 
    FROM score JOIN student ON score.id = student.id
    GROUP BY name
) AS tmp GROUP BY gender;

解释一下上述 SQL 查询语句:

  • 内层查询 SELECT name, gender, MAX(score) + MIN(score) AS max_min_score FROM score JOIN student ON score.id = student.id GROUP BY name 获取每个学生最高分数和最低分数之和,并将其命名为 max_min_score
  • 外层查询 SELECT gender, AVG(max_min_score) FROM (...) AS tmp GROUP BY gender 对内层查询的结果表按照性别进行分组,并计算每个分组中学生最高分数和最低分数之和的平均值。

这样就能够实现将查询出来的结果表再次进行聚合操作了。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=3850

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?