我对聚合函数以及select语句中允许的内容有些困惑。所以我有这个小小的说明:
Restrictions on aggregation: if any aggregation is used, then each element
in the select list must be either aggregated or an attribute on the group by list
我对上述内容的困惑是:这是否意味着必须对select语句中作为聚合函数的参数的任何内容进行分组?即
select max(attribute) from table group by attribute
我不明白对聚合的限制。
所以这引出了我的问题:
这是我的架构:我不知道如何强调,所以我只是说明了键
Student(sID, surName, firstName, campus, email, cgpa) key: sID
Course(dept, cNum, name, breadth) key: dept, cNum
Offering(oID, dept, cNum, term, instructor) key: oID
Took(sID, oID, grade) key: sID, oID
我有一个未完成的SQL查询:
select ________ from Offering, Took where Offering.oID = Took.oID group by dept
以下哪一项可以进入select子句,为什么允许?:
sid, count(sid), grade, avg(grade), dept, count(dept), term, min(term)
编辑:写错了查询。对不起,这是正确的。
答案 0 :(得分:0)
使用聚合时,SELECT
子句中不在聚合函数内的任何字段也应位于GROUP BY
中,或者您不能在SELECT
中使用该字段。
在您的示例中,这些字段必须位于GROUP BY
:sid,grade,dept,term