GROUP BY语句详解

GROUP BY语句详解一、groupby的意思为分组汇总。使用了groupby后,要求Select出的结果字段都是可汇总的,否则就会出错。groupby有一个原则,就是select后面的所有列中,没有使用聚合函数的列,必须出现在groupby后面。比如,有:{学号,姓名,性别,年龄,成绩}字段这样写:SELECT学号,姓名,性别,年龄,sum(成绩)FROM学生表GROUPB…

大家好,又见面了,我是你们的朋友全栈君。

一、group by 的意思为分组汇总。
使用了group by 后,要求Select出的结果字段都是可汇总的,否则就会出错。

group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。

比如,有:{学号,姓名,性别,年龄,成绩}字段

这样写:
SELECT 学号,姓名,性别,年龄,sum(成绩)
FROM 学生表
GROUP BY 学号
就是错的,因为 “姓名、性别、年龄”未被汇总,且不一定是单一。

这样写:
SELECT MAX(学号),MAX(姓名),MAX(性别),MAX(年龄),sum(成绩)
FROM 学生表
GROUP BY 学号
是对的,汇总出每一同学号学生的总成绩。注意的是,只要学号相同,别的如果有不同,取它们值最大的一条作为显示输出。

这样写:
SELECT 学号,姓名,性别,年龄,sum(成绩)
FROM 学生表
GROUP BY 学号,姓名,性别,年龄
这样写也是对的,但注意的是,学号,姓名,性别,年龄中,只要有一个不同,就会当成另一条记录来汇总。

二、什么是聚合函数?

什么是聚合函数(aggregate function)?

聚合函数对一组值执行计算并返回单一的值。

SQL中的聚合函数介绍

 

聚合函数有什么特点?

  1. 除了 COUNT 以外,聚合函数忽略空值。
  2. 聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。
  3. 所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。
  4. 标量函数:只能对单个的数字或值进行计算。主要包括字符函数、日期/时间函数、数值函数和转换函数这四类。

SQL中的聚合函数介绍

 

常见的聚合函数有哪些?

1、求个数/记录数/项目数等:count()

例如: 统计员工个数?

select count( ) from Company --包括空值
select count(*) from Company --不包括空值

2、求某一列平均数 :avg()

例如:求某个班平均成绩 ?求某个公司员工的平均工资?

select avg(score) from Scores ---平均成绩
select avg(salary) from Company --平均工资

注意:

若某行的score值为null时,计算平均值时会忽略带有null值得那一行。

如果想要把null当做0,那么可以使用IsNull函数把null转换成0,语法如下:

 avg(IsNull(score,0)) as ’Average Score‘

3、求总和,总分等:sum() –必须为数字列

例如:求某个班的总成绩?求公司总薪资支出?

select sum(score) from Scores
select sum(salary) from Company

4、求最大值,最高分,最高工资等:max()

例如:求班里最高分,公司员工最高工资?

select max(Score) from Scores
select max(salary) from Company

5、求最小值,最低分,最低工资等:max()

例如:求班里最低分,公司员工最低工资?

select min(Score) from Scores
select min(salary) from Company

SQL中的聚合函数介绍

 

聚合函数怎么正确的使用?

  • 1、 select 语句的选择列表(子查询或外部查询);
  • 2、having 子句;
  • 3、compute 或 compute by 子句中等;

注意: 在实际应用中,聚合函数常和分组函数group by结合使用,用来查询.where 子句的作用对象一般只是行,用来作为过滤数据的条件。

SQL中的聚合函数介绍

 

其他聚合函数(aggregate function)

6、 count_big()返回指定组中的项目数量。

与count()函数区别:count_big()返回bigint值,而count()返回的是int值。

数据类型详见:

SQL Server 数据类型的详细介绍及应用实例1

SQL Server 数据类型的详细介绍及应用实例2

SQL Server 数据类型的详细介绍及应用实例3

例如:

select count_big(prd_no) from sales

7、 grouping()产生一个附加的列。

当用cube或rollup运算符添加行时,输出值为1;

当所添加的行不是由cube或rollup产生时,输出值为0.

例如:

select prd_no,sum(qty),grouping(prd_no) from sales group by prd_no with rollup

8、binary_checksum() 返回对表中的行或表达式列表计算的二进制校验值,用于检测表中行的更改。

例如:

select prd_no,binary_checksum(qty) from sales group by prd_no

9、checksum_agg() 返回指定数据的校验值,空值被忽略。

例如:

select prd_no,checksum_agg(binary_checksum(*)) from sales group by prd_no

10、checksum() 返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引。

11、stdev()返回给定表达式中所有值的统计标准偏差。

例如:

select stdev(prd_no) from sales

12、stdevp() 返回给定表达式中的所有值的填充统计标准偏差。

例如:

select stdevp(prd_no) from sales

13、 var() 返回给定表达式中所有值的统计方差。

例如:

select var(prd_no) from sales

14、 varp()返回给定表达式中所有值的填充的统计方差。

例如:

select varp(prd_no) from sales
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141378.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库课程设计——学生宿舍信息管理系统

    数据库课程设计——学生宿舍信息管理系统数据库课程设计——学生宿舍信息管理系统目录                                                                                             1.设计目的…22、任务与要求…23、学生宿舍管理系统课程设计…23.1引言…23.2需求分析…23.2.1….

    2022年5月19日
  • 微信小程序开发【前端+后端(java)】

    微信小程序开发【前端+后端(java)】前言现在微信小程序越来越火了,相信不少人都通过各种途径学习过微信小程序或者尝试开发,作者就是曾经由于兴趣了解开发过微信小程序,最终自己的毕业设计也是开发一个微信小程序。所以现在用这篇博客记录我之前开发的一些经验和一些心得吧。主要内容springboot+mybatis构建小程序项目构建小程序组件讲解小程序api调用后台resetful接口编写小程序调用后台接口小…

    2022年6月10日
  • unix grep命令_grep命令实例

    unix grep命令_grep命令实例grep一般格式为:grep[选项]基本正则表达式[文件]这里基本正则表达式可为字符串。单引号双引号在grep命令中输入字符串参数时,最好将其用双引号括起来。在调用模式匹配时,应使用单引号。 例如:“mystring”。这样做有两个原因

    2022年8月30日
  • curl命令具体解释

    curl命令具体解释

    2021年12月10日
  • 事务ACID理解

    事务ACID理解事务管理(ACID)谈到事务一般都是以下四点原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性(Consistency)事务前后数据的完整性必须保持一致。隔离性(Isolation)事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔…

    2022年10月12日
  • 【ztree系列】树节点的模糊查询

    【ztree系列】树节点的模糊查询以前设计模糊查询的功能,一般都是针对表格来做的,还真没考虑过对tree进行模糊查询,也可能是因为遇到的数据量还没到头疼的程度吧。为了完美的实现模糊查询的效果,搞了半天css,对输入框显示效果的设置更是修改了n多次,什么半圆角、边框、光影。。。真佩服我这颗屡试屡换的小心脏啊一、页面设计对于搜索功能,首先要有输入框,用于接收输入内容;然后就是显示搜索结果用的标签,控制焦点用的上移下动按钮。其实

    2022年5月29日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号