哪些是有效的查询?

时间:2015-04-19 17:14:47

标签: mysql sql database database-schema

我对聚合函数以及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)

编辑:写错了查询。对不起,这是正确的。

1 个答案:

答案 0 :(得分:0)

使用聚合时,SELECT子句中不在聚合函数内的任何字段也应位于GROUP BY中,或者您不能在SELECT中使用该字段。

在您的示例中,这些字段必须位于GROUP BY:sid,grade,dept,term