MySQL查看计数和总和以及来自多个表的其他操作

时间:2015-02-18 17:06:06

标签: mysql sql

以下是我的情况:

我有4个表,在所有这些表中都包含一个名为score的列,我的目标是为4个表的结果创建操作的视图获得以下值:

  • 总分
  • 总行数
  • 平均值(总得分/行数)

现在我知道我可以创建视图:

(SELECT * FROM table1 where condition) + (SELECT * FROM table2 where condition)

等等。

但是对于我必须嵌套的三个目标中的每个目标,至少选择所有表格2次。

所以我的问题是你如何处理这样的案件?在sql中是否有任何操作使这个任务变得容易,或者我必须做多余的事情?

更新

所以我的完整案例是我系统中的每个用法都有一个叫做division_id的东西,现在我想用这个ID来找出每个部门的分数:

enter image description here

(请不要_COPY)

1 个答案:

答案 0 :(得分:1)

您可以使用UNION加入4个表,因为没有连接条件。使用除法字段可以通过几种方法完成此操作。可能最简洁的是:

select division_id, count(*), avg(scores.score), sum(scores.score) from
  user join 
  (select id as user_id, score from user
   UNION ALL
   select user_id, score from test_score
   UNION ALL
   select user_id, score from task_score
   UNION ALL
   select user_id, score from offline_score) as scores
  on user.id = scores.user_id
  group by division_id

Link to SQLFiddle