使用GROUP BY子句进行分组操作

本文通过实例介绍GROUP BY子句的使用方法。

1 准备测试数据

新建数据表tb_Student并插入下图所示的测试数据。

图1 数据tb_Student的数据

2 使用GROUP BY子句进行分组

问题1 

要求

按照班级ID对学生进行分组,并查询出每个班级的学生数,学生的最大年龄,最小年龄,年龄总和及年龄平均等信息。

解答

SELECT s.class_id AS 班级,COUNT(*) AS 人数,MAX(s.student_age) AS 年龄最大,MIN(s.student_age) AS 年龄最小,SUM(s.student_age) AS 年龄总和,AVG(s.student_age) AS 年龄平均 FROM tb_Student AS s GROUP BY s.class_id

查询结果

图2 问题1的查询结果

问题2

要求

查询出存在年龄小于25周岁学生的班级ID及班级人数。

解答

SELECT s.class_id AS 班级,COUNT(*) AS 人数 FROM tb_Student AS s GROUP BY s.class_id HAVING MIN(s.student_age)<25

查询结果

图2 问题2的查询结果

3 知识总结

使用GROUP BY子句可以对数据按照一个或者多个字段进行分组操作,并可以对分组结果进行过滤操作,其语法形式为:

[GROUP BY 字段][HAVING <条件表达式>]

其中:“GROUP BY 字段”部分完成分组操作;“HAVING <条件表达式>”部分对分组结果进行过滤操作。

时间: 2024-08-28 15:41:50

使用GROUP BY子句进行分组操作的相关文章

JPA标准GROUP BY子句

GROUP BY子句用于从一个或多个表中收集数据并将它们排列在一个分组中. 在Criteria API中,AbstractQuery接口的groupBy()方法用于过滤记录并对它们进行分组. 标准GROUP BY示例 在这里,我们将在student表上执行多个GROUP BY操作.假设该表包含以下记录 - DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `S_ID` int(11) NOT NULL, `S_NAME` varch

在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句

在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句 突然看到这个问题,脑袋一蒙,不知道啥意思,后来想想,试图把select里的选项放到后面,问题自然解决! 下面这个就是报“orderdate select shipcountry,sum(shipvia) as totalvia,OrderDate as thefirsttime from orders group by shipcountry,相应的从网上看到其他的朋友也有这样的问题 比如要显示authors表中

使用Group By子句的时候,一定要记住下面的一些规则

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

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

今天用SQL Server尝试实现一个SQL语句的时候,报了如标题所示的错误,通过在百度里面搜索,并亲自动手实现,终于发现问题所在,现在把它记录下来. 语句如下: select [OrderID],[ProductID], min(UnitPrice) as MinUnitPrice into NewDetails FROM [Northwind].[dbo].[Order Details] Group by [OrderID] 执行该语句之后,SQL Server报错如下: "消息 8120,

T-Sql语法:GROUP BY子句GROUPING SETS、CUBE、ROLLUP

#cnblogs_post_body h1 { background-color: #A5A5A5; color: white; padding: 5px } GROUP BY子句 1.ROLLUP() 生成某一维度的分组的小计行,还生成一个总计行. 示例表: select * from student 我们来看一下具体示例: select sex,sclass,sum(score) from student group by rollup(sex,sclass) 如图中所示,ROLLUP()为

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

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

6.InfluxDB-InfluxQL基础语法教程--GROUP BY子句

本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) GROUP BY子句通过用户自己制定的tags set或time区间,来将查询结果进行分组. 一.GROUP BY tags GROUP BY 通过用户指定的tag set,来对查询结果进行分组. 语法: SELECT_clause FROM_clause [WHERE_clause] GROUP BY [* | <t

oracle数据库GROUP BY 子句

1.GROUP BY子句 在SELECT 列表中所有未包含在组函数中的列都应该包含在GROUP BY 子句中. 如下: SELECT deptno,AVG(sal) from emp GROUP BY deptno;(deptno为没有包含在组函数的列) 以下查询是错误的: SELECT a,b,c,AVG(sal) from emp GROUP BY a,b;(c没有写在group by 后面) =================================================

group_concat(&#39;fanme&#39;)函数 group by id 把分组后的fname 都查出来 结果以 &quot;&quot;张三,李四,王五&quot;&quot;

group_concat函数详解 博客分类: SQL MySQLSQL 问了好多人,都不知道group_concat这个函数. 这个函数好啊,能将相同的行组合起来,省老事了. MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 Sql代码   select * from aa; +------+------+| id| name