我有两个或多或少相同的表:
test_score
id int(11) PK AI
user_id int(11)
module_id int(11)
score double
number_correct int(11)
correct_total int(11)
timestamp datetime
phase_id int(11)
medal_id int(11)
team_id int(11)
status_id int(11)
和
id int(11) PK AI
user_id int(11)
module_id int(11)
score double
number_correct int(11)
correct_total int(11)
timestamp datetime
phase_id int(11)
medal_id int(11)
team_id int(11)
status_id int(11)
现在这两者完全相同的原因是它们包含来自我系统中每个组件的数据。
现在我想使用AVG()
函数来查找这两个表的平均分数。
这可能吗?
答案 0 :(得分:5)
SELECT user_id, average_score = AVG(score)
FROM (
SELECT user_id, score FROM test_score1
UNION ALL
SELECT user_id, score FROM test_score2
) AS subquery
GROUP BY user_id
答案 1 :(得分:3)
不再考虑表格,而是"结果集"。
将问题分解为两个部分..
首先,我如何创建一个"结果集"从这两个表中我想要的数据? 最简单的解决方案,联合声明
select * from <table1>
union
select * from <table2>
现在,取上面的结果集并计算平均值
select xx.module_id,avg(xx.score) as AvgModuleScore
from
(
select * from <table1>
union
select * from <table2>
) xx