在this video的02:16左右,教授说这个SQL语句有问题,无法实现:
SELECT S.name, AVG(S.gpa)
FROM Students S
GROUP BY S.dept
我不明白为什么,我创建了一个表,它的工作原理。
为什么他们说这是错误的,在我的例子中有什么错误?
CREATE TABLE Students(
name CHAR(20),
gpa FLOAT,
department CHAR(20)
);
Insert INTO Students VALUES
('001', 4.0, 'CS'),
('002', 3.5, 'MATH'),
('003', 3.7, 'STAT'),
('004', 4.1, 'CS');
我的MySQL 5.5的预期输出:screen capture
1条答案
按热度按时间k3bvogb11#
MySQL中的这个“功能”是由sql_mode ONLY_FULL_GROUP_BY控制的,在旧版本的MySQL中,默认情况下是禁用的。
简单地说,从select语句中既不是聚合函数的一部分也不是group by子句的一部分的列返回的数据是任意的(您无法控制返回哪些值)。
例如,基于您的数据示例,以下对
CS
部门的查询将返回001
,但也有004
名称参见example
更多信息请参见MySQL Handling of GROUP BY。