无法使用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

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

来自分类Dev

无法使用GROUP BY子句将ORACLE中的数据分组

来自分类Dev

使用Java反射获取字段信息

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用LINQ查询获取字段值

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

无法从Firebase Firestore获取字段

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用获取字段返回文本

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何使用Pojo获取字段?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用装饰器获取字段列表

来自分类Dev

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

来自分类Dev

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

Related 相关文章

热门标签

归档