加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 22:26:42 所属栏目:百科 来源:网络整理
导读:T-SQL核心语句形式: SELECT --指定要选择的列或行及其限定 [INTO ] --INTO子句,指定结果存入新表 FROM --FROM子句,指定表或视图 [WHERE ] --WHERE子句,指定查询条件 [GROUP BY ] --GROUP BY子句,指定分组表达式 [HAVING ] --HAVING子句,指定分组统计条
T-SQL核心语句形式:

SELECT--指定要选择的列或行及其限定
[INTO ]--INTO子句,指定结果存入新表
FROM--FROM子句,指定表或视图
[WHERE ]--WHERE子句,指定查询条件
[GROUP BY ]--GROUP BY子句,指定分组表达式
[HAVING ]--HAVING子句,指定分组统计条件
[ORDER BY [ASC|DESC]]--ORDER子句,指定排序表达式和顺序

聚合函数:

COUNT:求组中项数,返回int类型整数。

GROUP BY 子句:指定用来放置输出行的组。指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。如果 SELECT 子句中包含聚合函数,则计算每组的汇总值。

示例一(Select选择列表中存在聚合函数):

错误的写法:

SELECT U_ID,House_Addrinfo,COUNT(U_ID) AS CX
FROMYX_ChuShou
GROUP BY U_ID
ORDER BY CX DESC

这条语句出现"选择列表中的列 'YX_ChuShou.House_Addrinfo' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。"的错误提示。

正确的写法:

SELECT U_ID,min(House_Addrinfo),COUNT(U_ID) AS CX
FROM YX_ChuShou
GROUP BY U_ID
ORDER BY CX DESC

SELECT U_ID,COUNT(U_ID) AS CX
FROM YX_ChuShou
GROUP BY U_ID,House_Addrinfo
ORDER BY CX DESC


示例二(Select选择列表中不存在聚合函数):

错误的写法:
select au_fname,au_lname,zip,city,state
from authors
group by city

服务器: 消息 8120,级别 16,状态 1,行 1
列 'authors.au_fname' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
服务器: 消息 8120,级别 16,状态 1,行 1
列 'authors.au_lname' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

正确的写法:
select au_fname,state
from authors
group by city,au_fname,zip,state

或:
select au_fname,state
from authors
order by city---使用order by 子句进行排序

即指定 GROUP BY 时,选择列表中任一非聚合表达式内的所有列都应包含在 GROUP BY 列表中,或者 GROUP BY 表达式必须与选择列表表达式完全匹配。

小白:因为结果是一个表,所以一般不会出现select *,sum(job_id)这么写的,不然sum就一个值,你让它跟谁并列显示一行去?

如果 select job_id,job_desc,sum(max_lvl) from jobs group by jobs.job_id,job_desc

非要并列显示点什么,那对应列都应写在group by里,确保该列一个值就出现一次, 一个值对应一个sum

有一个列就加进group by一个

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读