首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中组合3个表并求平均年龄

在SQL中组合3个表并求平均年龄
EN

Stack Overflow用户
提问于 2021-03-01 10:16:38
回答 1查看 25关注 0票数 0

我需要合并三个表,并在使用SQL合并这三个表后找到平均年龄。这三个表中age列的名称分别为pr16pnk.age、pr16puf.age和pr16yag.age。我已经成功地找到了表分离时的结果,但我在合并结果时遇到了麻烦。下面列出了我使用的代码。

代码语言:javascript
复制
SELECT AVG(pr16pnk.age) AS MeanAge
FROM pr16pnk
UNION ALL
SELECT AVG(pr16puf.age) AS MeanAge
FROM pr16puf
UNION ALL
SELECT AVG(pr16yag.age) AS MeanAge
FROM pr16yag
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-01 10:18:20

您可以使用两个级别的聚合。平均值的平均值:

代码语言:javascript
复制
SELECT AVG(MeanAge)
FROM (SELECT AVG(pr16pnk.age) AS MeanAge
      FROM pr16pnk
      UNION ALL
      SELECT AVG(pr16puf.age) AS MeanAge
      FROM pr16puf
      UNION ALL
      SELECT AVG(pr16yag.age) AS MeanAge
      FROM pr16yag
     ) a;

但是,您可能真正想要的是总体平均值,其计算方法如下:

代码语言:javascript
复制
SELECT AVG(MeanAge),
       SUM(sum_age) / SUM(cnt)
FROM (SELECT AVG(pr16pnk.age) AS MeanAge, SUM(age) as sum_age, COUNT(*) as cnt
      FROM pr16pnk
      UNION ALL
      SELECT AVG(pr16puf.age) AS MeanAge, SUM(age) as sum_age, COUNT(*) as cnt
      FROM pr16puf
      UNION ALL
      SELECT AVG(pr16yag.age) AS MeanAge, SUM(age) as sum_age, COUNT(*) as cnt
      FROM pr16yag
     ) a;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66415819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档