选择列表中的列 '***' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

简介: 错误提示: 消息 8120,级别 16,状态 1,第 2 行 选择列表中的列 'Qiu.dbo.students.name' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。 解决方案: 如果 SELECT 子句 <select list> 中包含聚合函数,则 GROUP BY 将计算每个组的汇总值。指定 GROUP BY 时,选择列表中任何非聚合表达式内

错误提示:

消息 8120,级别 16,状态 1,第 2 行
选择列表中的列 'Qiu.dbo.students.name' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

解决方案:

如果 SELECT 子句 <select list> 中包含聚合函数,则 GROUP BY 将计算每个组的汇总值。指定 GROUP BY 时,选择列表中任何非聚合表达式内的每个属性名都应包含在GROUP BY列表中,或者GROUP BY表达式必须与选择列表表达式完全匹配。

错误用法:

SELECT name,sex,SUM(age)
  FROM [Qiu].[dbo].[students]
  group by sex

更正后用法:

SELECT name,sex,SUM(age)
  FROM [Qiu].[dbo].[students]
  group by sex,name
使用Group By子句的时候,一定要记住下面的一些规则:
(1)不能Group By非标量基元类型的列,如不能Group By text,image或bit类型的列
(2)Select指定的每一列都应该出现在Group By子句中,除非对这一列使用了聚合函数;
(3)不能Group By在表中不存在的列;
(4)进行分组前可以使用Where子句消除不满足条件的行;
(5)使用Group By子句返回的组没有特定的顺序,可以使用Order By子句指定次序。

use Qiu
select sex,avg(age)
from students
group by sex
目录
相关文章
|
Oracle 关系型数据库
查询Oracle字段列的最大值并查询多列数据的实现方法
查询Oracle字段列的最大值并查询多列数据的实现方法
2294 0
|
7月前
|
SQL 数据挖掘 数据库
|
9月前
|
SQL
sql语句按指定某个字段分组后删除重复数据只保留id最小/最大的一条数据
sql语句按指定某个字段分组后删除重复数据只保留id最小/最大的一条数据
164 0
|
10月前
|
SQL 存储 Oracle
为什么 GROUP BY 之后不能直接引用原表中的列
为什么 GROUP BY 之后不能直接引用原表中的列
56 1
|
10月前
|
SQL
SQL语句两个字段或多个字段同时order by 排序
SQL语句两个字段或多个字段同时order by 排序
1294 0
|
SQL Oracle 关系型数据库
SQL学习之使用order by 按照指定顺序排序或自定义顺序排序
我们通常需要根据客户需求对于查询出来的结果给客户提供自定义的排序方式,那么我们通常sql需要实现方式都有哪些,参考更多资料总结如下(不完善的和错误望大家指出): 一、如果我们只是对于在某个程序中的应用是需要按照如下的方式排序,我们只需在SQL语句级别设置排序方式:
854 0
|
SQL
【SQL系列】在WHERE子句中使用别名来引用列
【SQL系列】在WHERE子句中使用别名来引用列
234 0
|
前端开发
Bootstrap - 列排序,列偏移,列嵌套
Bootstrap - 列排序,列偏移,列嵌套
124 0
GROUP BY 一个以上的列
GROUP BY 一个以上的列
114 1
|
SQL 大数据 开发者
SQL 语法--表特定语句--分组、排序、过滤 | 学习笔记
快速学习 SQL 语法--表特定语句--分组、排序、过滤
272 0
SQL 语法--表特定语句--分组、排序、过滤 | 学习笔记