在SQL中分组查询 Group by 的存在条件是什么

在select 语句中 Group by的存在条件是什么
为什么数据库总是报这样的错误:
消息 8120,级别 16,状态 1,第 1 行
选择列表中的列 'userinfo.UserName' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

请说的详细点,最好举个例子..谢谢

楼主你好,
首先你要明白group by 是分组查询的意思
使用group by 关键字时,在select列表中可以指定的项目是有限制的,
select语句中仅允许以下几项,
1:被分组的列
2:为每个分组返回一个值的表达式,
例如用一个列明作为参数的聚合函数小僧再介绍一下几个常用的聚合函数
1:sum 求和
2:avg 求平均值
3:max / min 求最大值 / 最小值
4:count 表达式中非空值的出现次数
楼主你是想查什么呢?
我打2个比方吧查询男同学和女同学的分数总和
select sum(成绩) as 成绩总和,性别
from cj
group by 性别
结果样式:
成绩总和 性别
XXX 男
XXX 女

如果是多表连接的话,那就是连接后的表,然后再分组。。。
group by 的是在分组后面操作的语句

查询男同学和女同学的平均分
select avg(成绩) as 平均分,性别
from cj
group by 性别
结果样式:
平均分 性别
XXX 男
XXX 女
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-22
GROUP BY 子句用来为结果集中的每一行产生聚合值。如果聚合函数没有使用 GROUP BY 子句,则只为 SELECT 语句报告一个聚合值。

USE AdventureWorks;
GO
SELECT SalesOrderID, SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail sod
GROUP BY SalesOrderID
ORDER BY SalesOrderID ;
GOGROUP BY 关键字后跟一个列的列表,称为组合列。GROUP BY 子句限制结果集中的行数,每个不同的值在组合列中只占一行。每个结果集行都包含与其组合列中的特定值相关的汇总数据。

当 SELECT 语句中包含 GROUP BY 关键字时,对可以在选择列表中指定的项目有一些限制。选择列表中允许的项目是:

组合列。

为组合列中的每个值只返回一个值的表达式,例如将列名作为其参数之一的聚合函数。这些函数称为矢量聚合。

简单点来说就是select 语句中调用的函数如果能够使用group by 才能存在group by 子句 通常是一些统计函数返回集合的情况。例如sum()
第2个回答  2013-08-22
查询语句里用了GROUP BY 后面要跟所有的字段名如userinfo.UserName,不然查不到。
貌似联表都这样

在SQL中分组查询 Group by 的存在条件是什么
首先你要明白group by 是分组查询的意思 使用group by 关键字时,在select列表中可以指定的项目是有限制的,select语句中仅允许以下几项,1:被分组的列 2:为每个分组返回一个值的表达式,例如用一个列明作为参数的聚合函数小僧再介绍一下几个常用的聚合函数 1:sum 求和 2:avg 求平均值 3:max ...

在SQL中group by子句有什么作用?
group by子句与select语句配合使用,把相同的数据划分为组,group by子句在where子句之后,在order by子句之前,这个子句对CPU的运行效率有很大影响。

在SQL中不用WHERE 能用GROUP BY 吗?
where不是group by的前提,group by是在你使用了诸如max,count这类函数用来整合分组用的

sql语句中的group by的用法,求大神指点。
GROUP BY 子句具有符合 ISO 的语法和不符合 ISO 的语法。在一条 SELECT 语句中只能使用一种语法样式。对于所有的新工作,请使用符合 ISO 的语法。提供不符合 ISO 的语法的目的是为了实现向后兼容。在本主题中,GROUP BY 子句可以描述为常规或简单子句:常规GROUP BY 子句包括 GROUPING SETS、CUBE、ROLLUP、WITH CUBE...

一文讲懂SQL分组子句GROUP BY
GROUP BY的基本用法是,如果你的SQL语句中包含GROUP BY,那么SELECT语句后的列必须是表中已存在的列。例如,在Students表中,按性别Ssex进行分组,SELECT中的Ssex列必须在GROUP BY中出现,否则会报错。如错误写法:SELECT Sname(非GROUP BY列),正确写法应为SELECT Ssex。在实际操作中,GROUP BY通常...

各位高手能告诉我SQL中的Group By的查询过程 多列分组的查询过程是怎...
参数说明:ALL:包含所有组和结果集,甚至包含那些任何行都不满足WHERE子句指定的搜索条件的组和结果集。如果指定了ALL,将对组中不满足搜索条件的汇总列返回空值。不能用CUBE或ROLLUP运算符指定ALL。如果访问远程表的查询中有WHERE子句,则不支持Group By ALL操作。Group_By_expression:对其执行分组的...

关于group by 两个或以上条件的分析
group by功能在SQL查询中极为重要,尤其当需要处理多条件分组时,其灵活性与效率不言而喻。首先,我们需要明确group by的使用原则,它通常与聚合函数结合,如count、sum、avg等,以对数据进行聚合分析。使用group by时,关注的字段应为聚合函数中的字段或是group by中定义的字段。接下来,让我们具体探讨...

SQL语句 group by子句后的分组项如果有多个是怎样进行分组的
表示根据后面的字段来分组,如果只有1个字段,那只是根据这个字段的值来进行一次分组就可以了;若后面有多个字段,那表示根据多字段的值来进行层次分组,分组层次从左到右,即先按第1个字段分组,然后在第1个字段值相同的记录中,再根据第2个字段的值进行分组;接着第2个字段值相同的记录中,再根据第3...

急救!!sql的group by分组如何去除having条件count(name>1)中不符合...
分组统计时需要将数据查询出来,以视图的方式存起来,然后在视图中进行分组统计就行了。举例:(MySql)数据为:筛选:SELECT COUNT( id ) FROM (SELECT * FROM `category` WHERE other = "1") AS viewAGROUP BY id得到 count(id)3 4

GROUP BY 使用方法详解
GROUP BY 是SQL开发中的关键工具,它能根据指定字段对查询结果进行分组统计。配合聚合函数和HAVING,GROUP BY的核心在于指定可汇总的列,未使用聚合函数的列必须包含在分组字段中。其语法包括:select聚合函数,字段名 from表名 where条件 group by字段1,字段2,或加上HAVING过滤条件。举个例子,若不正确...

相似回答