【发布时间】:2017-05-10 11:41:21
【问题描述】:
有学生和他们的分数:
Student:
ID NAME
1 a
2 b
3 c
4 d
Mark:
ID STUDENT_ID MARK
1 1 4
1 1 2
1 3 4
我想获得一份关于他们平均分数的有序列表,以获得:
a, (4+2)/2
b, -,
c, 4/1
d, -
我不能在选择时计算它,甚至不能将它存储在学生表的列中。有趣的部分是当我想要对结果进行排序和限制(分页)时。要获得正确的排序,我必须知道所有平均值 - 所以我不会使用没有 LIMIT 的 SELECT 查询。但是怎么做?理想情况下,按 ID 或 NAME 订购很容易。
【问题讨论】:
-
听起来你需要一个中间表并用一些聚合值填充它......看起来像 SUM(MARK) / COUNT(StudentId)。
-
从你的约束 我不能在 SELECT-ing 时计算它这听起来像是一个学术练习。如果您解释该约束的要点,这将有所帮助。请edit您的问题。
-
@AntDC:当然,但这是应该避免的。每次选择都是开销!
标签: mysql