GROUP BY 使用方法详解

这篇具有很好参考价值的文章主要介绍了GROUP BY 使用方法详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

group by是开发中经常用到的SQL语句,从字面意思来看就是根据哪个字段或者哪几个字段对查询到的数据进行分组统计,既然是分组统计那如何分组呢?所以group by通常都是和聚合函数还有having一起使用。

一、语法

select 聚合函数(字段1),字段2 from 表名 where 条件 group by 字段2,字段3
或者
select 聚合函数(字段1),字段2 from 表名 where 条件 group by 字段2,字段3 having 过滤条件
使用了group by 后,要求select出的结果字段都是可汇总的,否则就会出错。
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。

二、举个例子

CREATE TABLE Sales (commodity VARCHAR(50), region VARCHAR(50), salesVolume INT);

INSERT INTO Sales VALUES (N'电视机', N'河北省', 10000);
INSERT INTO Sales VALUES (N'电视机', N'山东省', 20000);
INSERT INTO Sales VALUES (N'电视机', N'山东省', 30000);
INSERT INTO Sales VALUES (N'冰箱', N'浙江省', 15000);

SELECT * FROM Sales

groupby,SQL Server,数据库,sql,sqlserver

SELECT region,SUM(salesVolume) 销量 from Sales  GROUP BY region

返回结果如下:
groupby,SQL Server,数据库,sql,sqlserver

SELECT region,commodity ,SUM(salesVolume) 销量 from Sales  GROUP BY region,commodity

返回结果如下:
groupby,SQL Server,数据库,sql,sqlserver

SELECT region,commodity ,SUM(salesVolume) 销量 from Sales  GROUP BY region

这句代码则是会报错:
groupby,SQL Server,数据库,sql,sqlserver

三、where和having的使用

1、where+group by

where 限定的条件查询会在group by 分组之前执行。

SELECT region,SUM(salesVolume) 销量 from Sales WHERE commodity='电视机' GROUP BY region

返回结果如下:
groupby,SQL Server,数据库,sql,sqlserver

2、group by+having

having限定的条件查询会在group by分组之后查询。

SELECT region,SUM(salesVolume) 销量 from Sales GROUP BY region HAVING SUM(salesVolume)>10000

返回结果如下:
groupby,SQL Server,数据库,sql,sqlserver

3、where+group by+having

where和having在一起使用的时候,会先执行where的限定条件查询,最后再执行having的限定条件查询。

SELECT region,SUM(salesVolume) 销量 from Sales WHERE commodity='电视机' GROUP BY region HAVING SUM(salesVolume)>10000

返回结果如下:
groupby,SQL Server,数据库,sql,sqlserver

四、聚合函数

常用的聚合函数有:count() 计数, sum() 求和 , avg() 求平均值, max() 求最大值, min()求最小值。

实例如下:

1、count( )
SELECT region,COUNT(*) 记录数 FROM Sales GROUP BY region

返回结果:
groupby,SQL Server,数据库,sql,sqlserver

2、avg( )
SELECT region,AVG(salesVolume) 平均销量 FROM Sales GROUP BY region 

返回结果:
groupby,SQL Server,数据库,sql,sqlserver

3、max( )
SELECT region,MAX(salesVolume) 销售最多 FROM Sales GROUP BY region 

返回结果:
groupby,SQL Server,数据库,sql,sqlserver

4、min( )
SELECT region,MIN(salesVolume) 销售最少 FROM Sales GROUP BY region 

返回结果:
groupby,SQL Server,数据库,sql,sqlserver
还有一些不经常使用的:count_big()和count()相同作用但返回值的数据类型不同,count()返回 ‘int’ ,count_big()返回 ‘bigint’ ,stdev()求标准偏差,stdevp()求总体标准偏差,var()求方差,varp()求总体统计方差等等这里就不尽数了。

五、group by的其他可用参数。

1、group by rollup( )

SELECT region,SUM(salesVolume)销量 FROM Sales GROUP BY ROLLUP (region )

返回结果如下:
groupby,SQL Server,数据库,sql,sqlserver
这里比不加 rollup()的查询结果多了一行总计。

2、group by cube( )

SELECT region,commodity,SUM(salesVolume)销量 FROM Sales GROUP BY CUBE (region,commodity )

返回结果如下:
groupby,SQL Server,数据库,sql,sqlserver
添加cube()后不但增加了一行总计,还增加了每一组单项统计的合计。group by cube为所有可能的列组合创建组。 对于 group by cube (a, b),结果具有 (a, b)、(NULL, b)、(a, NULL) 和 (NULL, NULL) 唯一值的组。

3、group by grouping sets ( )

grouping sets选项可将多个 group by子句组合到一个 group by 子句中。 其结果与针对指定的组执行 union all运算等效。
例如:

SELECT region,commodity,SUM(salesVolume) 销量 FROM Sales
GROUP BY GROUPING SETS ( ROLLUP (region,commodity), CUBE (region,commodity) )

返回结果与两个 group by语句的联合查询相同。

SELECT region,commodity,SUM(salesVolume) 销量
FROM Sales GROUP BY ROLLUP (region,commodity)
UNION ALL
SELECT region,commodity,SUM(salesVolume) 销量 
FROM Sales GROUP BY CUBE (region,commodity)

返回结果如下:
groupby,SQL Server,数据库,sql,sqlserver
SQL 不会合并为 grouping sets 列表生成的重复组。 上例中,GROUPING SETS ( ROLLUP (region,commodity), CUBE (region,commodity) ),两个元素都返回总计行并且这两行都会列在结果中。文章来源地址https://www.toymoban.com/news/detail-640599.html

到了这里,关于GROUP BY 使用方法详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【flink番外篇】9、Flink Table API 支持的操作示例(6)- 表的聚合(group by、Distinct、GroupBy/Over Window Aggregation)操作

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月02日
    浏览(34)
  • MySQL报错:sql_mode=only_full_group_by 4种解决方法含举例,轻松解决ONLY_FULL_GROUP_BY的报错问题

    ​ 作为初学者,我们在使用MySQL的时候总是会遇到各种各样的报错,让人头痛不已。其中有一种报错,sql_mode=only_full_group_by,十分常见,每次都是老长的一串出现,然后带走你所有的好心情。 ​​ 出现这样的报错,并不是因为你的代码写得不好,而是因为在MySQL 5.7后,MySQ

    2024年02月22日
    浏览(49)
  • 【SQL Server】数据库开发指南(六)索引和视图的使用技巧、方法与综合应用

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月06日
    浏览(72)
  • SQL语句错误this is incompatible with sql_mode=only_full_group_by解决方法

    一、原理层面 这个错误发生在mysql 5.7.5 版本及以上版本会出现的问题: mysql 5.7.5版本以上默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了\\\"SQL92标准\\\"。 很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。

    2024年01月21日
    浏览(47)
  • springboot连接sqlserver 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接解决方法

    在连接的url后面添加 ;trustServerCertificate=true 如下 我们公司用的是sql server。我大四准备实习的时候学的是springtboot,公司用的是vs studio去连的sql server。我不想用vs studio,因为我想至少先会用一个技术,用熟练一个技术。我们组长说可以,能解决问题就行,但是平常的工作不能

    2024年02月11日
    浏览(72)
  • IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法

    DBMS: Microsoft SQL Server (no ver.) Case sensitivity: plain=mixed, delimited=exact [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]”。 ClientConnectionId:46f72084-baa1-4196-a3a5-3b222ff3b621 The s

    2024年02月05日
    浏览(69)
  • 6、hive的select(GROUP BY、ORDER BY、CLUSTER BY、SORT BY、LIMIT、union、CTE)、join使用详解及示例

    1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解 2、hive相关概念详解–架构、读写文件机制、数据存储 3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表 4、hive的使用示例详解-事务表、视图、物化视图、DDL

    2024年02月11日
    浏览(51)
  • [SQL挖掘机] - GROUP BY语句

    group by 是 sql 中用于对结果集进行分组的。通过使用 group by,可以根据一个或多个列的值将结果集中的行分组,并对每个分组应用某种聚合函数(如 count、sum、avg 等)以生成汇总信息。这样可以方便地对数据进行分类、统计和分析。 group by 语句通常与 select 语句结合使

    2024年02月15日
    浏览(58)
  • 【ABAP】OPEN SQL(七)「GROUP BY | HAVING | ORDER BY」

    💂 作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较

    2024年02月08日
    浏览(73)
  • SQL group by、where和having语句用法

    SQL 语句中的 GROUP BY 子句用于将具有相同值的行分组在一起,通常与聚合函数(如 COUNT、SUM、AVG 等)一起使用。WHERE 子句用于筛选符合条件的行。HAVING 子句则在分组后对分组结果进行进一步筛选。 以下是一个使用 SQL 语句中的 GROUP BY、WHERE 和 HAVING 子句的示例: 在这个示例中

    2024年02月07日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包