DQL-聚合函数

SQL基本函数,聚合函数对一组值执行计算,并返回单个值,也被称为组函数。

聚合函数对一组值执行计算并返回单一的值。除 COUNT 以外,聚合函数忽略空值,如果COUNT函数的应用对象是一个确定列名,并且该列存在空值,此时COUNT仍会忽略空值。

所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。聚合函数可以应用于查询语句的SELECT中,或者HAVING子句中,但不可用于WHERE语句中,因为WHERE是对逐条的行记录进行筛选。

一、聚合函数概述

1.1、什么是聚合函数

SQL基本函数,聚合函数对一组值执行计算,并返回单个值,也被称为组函数。 聚合函数经常与 SELECT 语句的 GROUP BY 子句的HAVING一同使用。

1.2、聚合函数的特点

除了 COUNT 以外,聚合函数忽略空值。
聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。
所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。

1.3、常用聚合函数

count(字段名):统计总行数
sum(字段名):计算列总和
avg(字段名):求某一列平均值
min(字段名):求某一列的最小值
max(字段名):求某一列的最大值

1.4、聚合函数语法

格式:
select 聚合函数(字段名) from 数据库表名;

二、聚合函数应用

2.1、聚合函数基础应用

案例:

查看学生信息表中通过英语成绩统计所有的学生数

mysql> select count(english) as 学生人数 from students;
+-----+
| 总人数 |
+-----+
| 7 |
+-----+
1 行于数据集 (0.01 秒)

注意:

null的记录是不会统计,如果要想统计null,可以用ifnull(字段名,默认值)

默认值里设置:null用0表示

mysql> select count(ifnull(english,0)) as 总人数 from students;
+-----+
| 总人数 |
+-----+
| 9 |
+-----+
1 行于数据集 (0.02 秒)

除了前面这个方法可以统计学生人数外,我们还可以:

#比较常用的方法
mysql> select count(*) from students;
+----------+
| count(*) |
+----------+
| 9 |
+----------+
1 行于数据集 (0.01 秒)

查看学生信息表中年龄大于19的总人数

mysql> select count(*) from students where age>19;
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 行于数据集 (0.02 秒)

查看学生信息表中英语成绩的总分

mysql> select sum(english) as 英语总分 from students;
+-------+
| 英语总分 |
+-------+
| 544.5 |
+-------+
1 行于数据集 (0.01 秒)

查看学生信息表中英语成绩的平均分

mysql> select avg(english) as 英语平均分 from students;
+----------+
| 英语平均分 |
+----------+
| 77.78571 |
+----------+
1 行于数据集 (0.01 秒)

查看学生信息表中英语成绩的最高分

mysql> select max(english) as 英语最高分 from students;
+-------+
| 英语最高分 |
+-------+
| 98.5 |
+-------+
1 行于数据集 (0.01 秒)

查看学生信息表中英语成绩的最低分

mysql> select min(english) as 英语最低分 from students;
+-------+
| 英语最低分 |
+-------+
| 50.0 |
+-------+
1 行于数据集 (0.01 秒)

2.2、聚合函数分组应用

案例:

统计学生信息表中男生的人数与女生的人数

mysql> select count(*),sex from students group by sex;
+----------+------+
| count(*) | sex |
+----------+------+
| 6 | 男 |
| 3 | 女 |
+----------+------+
2 行于数据集 (0.01 秒)

统计学生信息表中男生和女生的人数、英语总成绩、数学平均成绩

mysql> select count(*),sex,sum(english),avg(math) from students group by sex;
+----------+------+--------------+-----------+
| count(*) | sex | sum(english) | avg(math) |
+----------+------+--------------+-----------+
| 6 | 男 | 318.5 | 87.25000 |
| 3 | 女 | 226.0 | 82.66667 |
+----------+------+--------------+-----------+
2 行于数据集 (0.01 秒)

统计学生信息表中男生和女生的人数、英语总成绩、数学平均成绩,总人数超过3人显示

mysql> select count(*) as n,sex,sum(english),avg(math) from students group by sex having n>3;
+---+------+--------------+-----------+
| n | sex | sum(english) | avg(math) |
+---+------+--------------+-----------+
| 6 | 男 | 318.5 | 87.25000 |
+---+------+--------------+-----------+
1 行于数据集 (0.02 秒)

三、聚合函数应用扩展

3.1、group_concat

group_concat(字段名)可以作为一个输出字段来使用,表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合。

案例:

统计学生信息表中男生和女生的人数、英语总成绩、数学平均成绩及数学成绩的集合

mysql> select count(*),sex,sum(english),avg(math),group_concat(math) from students group by sex;
+----------+------+--------------+-----------+---------------------+
| count(*) | sex | sum(english) | avg(math) | group_concat(math) |
+----------+------+--------------+-----------+---------------------+
| 3 | 女 | 226.0 | 82.66667 | 80.0,70.0,98.0 |
| 6 | 男 | 318.5 | 87.25000 | 88.0,88.0,85.0,88.0 |
+----------+------+--------------+-----------+---------------------+
2 行于数据集 (0.02 秒)

3.2、with rollup

在最后新增一行,来记录当前列里所有记录的总和

案例:

统计学生信息表中男生和女生的人数、英语总成绩、数学平均成绩及增加显示列的记录总和

mysql> select count(*),sex,sum(english),avg(math) from students group by sex with rollup;
+----------+------+--------------+-----------+
| count(*) | sex | sum(english) | avg(math) |
+----------+------+--------------+-----------+
| 3 | 女 | 226.0 | 82.66667 |
| 6 | 男 | 318.5 | 87.25000 |
| 9 | NULL | 544.5 | 85.28571 |
+----------+------+--------------+-----------+
3 行于数据集 (0.02 秒)

DQL-聚合函数的更多相关文章

  1. DQL排序查询和DQL聚合函数

    DQL:查询语句 排序查询 语法: order by 字句 order by 排序字段1 排序方式1,排序字段2 排序方式2... 排序方式: ASC:升序,默认的 DESC:降序 SELECT * ...

  2. 数据查询语言DQL 与 内置函数(聚合函数)

    数据查询语言DQL 从表中获取符合条件的数据 select select*from表的名字   查询表所有的数据.(select跟from必须一块用 成对出现的) * 表示所有字段,可以换成想要查询的 ...

  3. 可以这样去理解group by和聚合函数

    写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是 ...

  4. TSQL 聚合函数忽略NULL值

    max,min,sum,avg聚合函数会忽略null值,但不代表聚合函数不返回null值,如果表为空表,或聚合列都是null,则返回null.count 聚合函数忽略null值,如果聚合列都是null ...

  5. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

  6. Mongodb学习笔记四(Mongodb聚合函数)

    第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...

  7. sql语句 之聚合函数

      聚合分析 在访问数据库时,经常需要对表中的某列数据进行统计分析,如求其最大值.最小值.平均值等.所有这些针对表中一列或者多列数据的分析就称为聚合分析. 在SQL中,可以使用聚合函数快速实现数据的聚 ...

  8. oracle数据库函数之============‘’分析函数和聚合函数‘’

    1分析函数 分析函数根据一组行来进行聚合计算,用于计算完成狙击的累积排名等,分析函数为每组记录返回多个行 rank_number() 查询结果按照次序排列,不存在并列和站位的情况,可以用于做Oracl ...

  9. ORACLE 自定义聚合函数

    用户可以自定义聚合函数  ODCIAggregate,定义了四个聚集函数:初始化.迭代.合并和终止. Initialization is accomplished by the ODCIAggrega ...

  10. sql 聚合函数、排序方法详解

    聚合函数 count,max,min,avg,sum... select count (*) from T_Employee select Max(FSalary) from T_Employee 排 ...

随机推荐

  1. SpringMvc 如何同时支持 Jsp 和 Json 接口?

    后端同学基本都会见过这种场景:在同一个工程中,有些页面使用jsp模版渲染,同时还有其他接口提供Json格式的返回值.为了同时支持这两种场景,我们一般是如何处理的呢? 其实非常简单: 1.在项目中为 S ...

  2. C++ 一键关闭屏幕

    Demo下载地址:http://pan.baidu.com/s/1vN4wF #include <windows.h> #include "resource.h" LR ...

  3. Helm安装ingress-nginx-4.1.4

    Application version 1.2.1 Chart version 4.1.4 获取chart包 helm fetch ingress-nginx/ingress-nginx --vers ...

  4. 如何在 C# 程序中注入恶意 DLL?

    一:背景 前段时间在训练营上课的时候就有朋友提到一个问题,为什么 Windbg 附加到 C# 程序后,程序就处于中断状态了?它到底是如何实现的? 其实简而言之就是线程的远程注入,这一篇就展开说一下. ...

  5. 关于MicroPython mpremote工具 的一些用例,闲聊

    关于MicroPython mpremote工具 的一些用例,闲聊 我尝试了很多不同的第三方micropython工具,有些是Windows应用程序,有些是VScode插件. 但是当我尝试过Micro ...

  6. [双重 for 循环]打印一个倒三角形

    [双重 for 循环]打印一个倒三角形 核心算法 里层循环:j = i; j <= 10; j++ 当i=1时,j=1 , j<=10,j++,打印10个星星 当i=2时,j=2 , j& ...

  7. Mysql_索引总结笔记

    Mysql 索引总结 1. 聚簇索引 InnoDB 引擎使用的就是聚簇索引,就是主键的索引,是一种数据的存储方式.所有的数据都是存储在索引的叶子结点上(与MySAM 引擎不同,MySAM是传统方式), ...

  8. 【面试题】JS第七种数据类型Symbol详解

    JS第七种数据类型Symbol详解 点击打开视频讲解更加详细 一.什么是Symbol? Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值.它是JavaScript中的第 七种 ...

  9. [Python]-pandas模块-机器学习Python入门《Python机器学习手册》-03-数据整理

    <Python机器学习手册--从数据预处理到深度学习> 这本书类似于工具书或者字典,对于python具体代码的调用和使用场景写的很清楚,感觉虽然是工具书,但是对照着做一遍应该可以对机器学习 ...

  10. .NET 反向代理 YARP 通过编码方式配置域名转发

    前面介绍了 YARP 通过配置文件的方式配置代理转发(传送门),而众所周知,微软的一贯作风就是能通过配置文件做的事情,通过编码的方式也能实现!YARP 也不例外,废话不多说,直接上代码! 首先,参照官 ...