【发布时间】:2023-04-04 15:11:01
【问题描述】:
当另一列值等于特定值时,我需要计算得分列的平均值。但是,我的计算是计算所有分数列的平均值,而忽略了我的条件。
最终结果是根据进度列是否是每个进度值来计算所有的得分值。例如。 “高于预期”、“预期”等。我只显示所有行进行测试。
SELECT
tbl_score.score,
tbl_progress.progress
(SELECT AVG(tbl_score.score) FROM tbl_score WHERE tbl_progress.progress = 'Expected') as expectedAv
FROM tbl_score
JOIN tbl_pupil ON tbl_score.pupilID = tbl_pupil.pupilID
JOIN tbl_test ON tbl_score.testID = tbl_test.testID
LEFT JOIN tbl_progress ON tbl_pupil.pupilID = tbl_progress.pupilID AND tbl_test.testID = tbl_progress.testID
WHERE
tbl_test.schoolproviderID=16 AND tbl_test.schoolproductID=32 AND tbl_test.imported=1
ORDER by tbl_progress.progress
但是,结果看起来像这样,表明 av 计算实际上是在计算所有分数的平均值。
【问题讨论】:
-
子查询需要与主查询相关。
-
tbl_progress.progress后面少了一个逗号,该查询的运行情况如何? -
那是我复制过来编辑不正确。
标签: mysql sql database average