无法使用GROUP BY子句获取字段

马修

我正在尝试创建一个简单的查询,该查询将找到一个平均得分最高的人,并显示有关他们的一些基本信息。它正在检索正确的记录,但是我无法使MySQL显示students.classId字段。我在LibreOffice Base中遇到的错误是

不在聚合函数或group by子句中。

查询错误:

SELECT CONCAT(`students`.`surname`, CONCAT(' ', `students`.`name`)) AS `Student`, 
    AVG(CAST(`marks`.`mark` AS DECIMAL (10, 2))) AS `Average`,
    `students`.`classId` 
FROM `students`, `marks`, `subjects` 
WHERE `marks`.`subjectId` = `subjects`.`subjectId` 
    AND `students`.`studentId` = `marks`.`markId`
GROUP BY `students`.`surname`, `students`.`name`
ORDER BY `Average` DESC LIMIT 1;

查询无错误:

SELECT CONCAT(`students`.`surname`, CONCAT(' ', `students`.`name`)) AS `Student`, 
    AVG(CAST(`marks`.`mark` AS DECIMAL (10, 2))) AS `Average`
FROM `students`, `marks`, `subjects` 
WHERE `marks`.`subjectId` = `subjects`.`subjectId` 
    AND `students`.`studentId` = `marks`.`markId`
GROUP BY `students`.`surname`, `students`.`name`
ORDER BY `Average` DESC LIMIT 1;

我对SQL没有真正的经验,但是我认为在这种情况下不必发布表定义。如果我写错了,请在评论中留下注释,我将尽快更新问题。

请注意,这不是家庭作业。

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

有问题的项目是这样的:

`students`.`classId`

由于GROUP BY查询为已连接表的一个或多个行生成了一行,因此该行可能对应多个studentsclassId价值。

这就是SQL要求您解决的问题:它想知道可能在中的许多项中的哪一项studentsclassId您希望它返回。这两个选择是添加一个聚合函数,例如

MIN(`students`.`classId`) AS StudentClassId

或使用studentsclassIdGROUP BY条款中:

GROUP BY `students`.`surname`, `students`.`name`, `students`.`classId`

请注意,如果您选择后面的选项,则汇总将针对每个学生/班级,而不是针对每个学生。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使用GROUP BY子句获取字段

来自分类Dev

无法使用GROUP BY子句在SQL中获取记录ID字段

来自分类Dev

无法从Firebase Firestore获取字段

来自分类Dev

使用Java反射获取字段信息

来自分类Dev

使用反射获取字段的通用类型

来自分类Dev

使用LINQ查询获取字段值

来自分类Dev

使用获取字段返回文本

来自分类Dev

如何使用反射获取字段值?

来自分类Dev

如何使用Pojo获取字段?

来自分类Dev

使用装饰器获取字段列表

来自分类Dev

使用jq同时获取字段和嵌套字段

来自分类Dev

使用反射获取字段的值时获取异常

来自分类Dev

通过反射休眠无法获取字段值

来自分类Dev

我无法在Django ManyToMany Relation中获取字段

来自分类Dev

如何使用jQuery以重复形式获取字段的值?

来自分类Dev

如何使用Lookbackapi来获取字段的所有_PreviousValues

来自分类Dev

Logstash:使用Filebeat时如何从路径获取字段?

来自分类Dev

使用DjangoRestFramework序列化器获取字段值

来自分类Dev

使用打字稿获取字段类型而不创建实例

来自分类Dev

使用simplexml解析PHP以获取字段值

来自分类Dev

使用Javascript和PHP获取字段的结果

来自分类Dev

使用正则表达式从 json 获取字段

来自分类Dev

如何在Dapper中使用IN子句获取字符串或GUID的列表

来自分类Dev

如何在Dapper中使用IN子句获取字符串或GUID的列表

来自分类Dev

org.hibernate.PropertyAccessException:无法通过反射获取器获取字段值

来自分类Dev

JPA-Hibernate-“无法通过继承的反射获取器获取字段值

来自分类Dev

如何使用SPARQL查询同时获取字段和字段计数?

来自分类Dev

如何使用group by子句获取记录数

来自分类Dev

Django REST Framework API:无法获取字段的字符串值

Related 相关文章

热门标签

归档