21.MySQL中的聚合函数

函数名 描述
COUNT() 返回参数字段的数量,不统计为NULL的记录
SUM() 返回参数字段之和
AVG() 返回参数字段的平均值
MAX() 返回参数字段的最大值
MIN() 返回参数字段的最小值
GROUP_CONCAT() 返回符合条件的参数字段值的连接字符串
JSON_ARRAYAGG() 将符合条件的参数字段值做为单个JSON数组返回,MySQL5.7.22新增
JSON_OBJECTAGG() 将符合条件的参数字段值做为单个JSON对象返回,MySQL5.7.22新增

COUNT()、SUM()、AVG()、MAX()、MIN()和GROUP_CONCAT()函数中可以在参数前添加DISTINCT,表示对不重复的记录进行相关操作。

COUNT()的参数设置为“*”时,表示统计符合条件的所有记录(包含NULL)。

1.准备

 1 CREATE DATABASE mahaiwuji;
 2 USE mahaiwuji;
 3 CREATE TABLE goods (
 4     id INT,
 5     name VARCHAR (32),
 6     price INT
 7 ) ENGINE = INNODB DEFAULT CHARSET = utf8;
 8 ?
 9 INSERT INTO goods VALUES (1,‘书‘,10);
10 INSERT INTO goods VALUES (2,‘键盘‘,11);
11 INSERT INTO goods VALUES (3,‘鼠标‘,15);
12 INSERT INTO goods VALUES (4,‘手机‘,20);
13 INSERT INTO goods VALUES (5,NULL,15);

2.COUNT()

1 SELECT COUNT(id) FROM goods; -- 5
2 ?
3 SELECT COUNT(name) FROM goods; -- 4,NULL不统计
4 ?
5 SELECT COUNT(price) FROM goods; -- 5
6 ?
7 SELECT COUNT(DISTINCT price) FROM goods; -- 4,因为有2个15,不重复的数量为4
8 ?
9 SELECT COUNT(*) FROM goods; -- 5

3.SUM()

1 SELECT SUM(price) FROM goods; -- 71
2 ?
3 SELECT SUM(DISTINCT price) FROM goods; -- 56,因为有2个15,只算了一个

4.AVG()

1 SELECT AVG(price) FROM goods; -- 14.2
2 ?
3 SELECT AVG(DISTINCT price) FROM goods; -- 14,因为有2个15,只算了一个

5.MAX()

1 SELECT MAX(price) FROM goods; -- 20
2 ?
3 SELECT MAX(DISTINCT price) FROM goods; -- 20

6.MIN()

1 SELECT MIN(price) FROM goods; -- 10
2 ?
3 SELECT MIN(DISTINCT price) FROM goods; -- 10

7.GROUP_CONCAT()

1 -- 书,键盘,鼠标,手机
2 SELECT GROUP_CONCAT(name) FROM goods; 

8.JSON_ARRAYAGG()

1 -- ["书", "键盘", "鼠标", "手机", null]
2 SELECT JSON_ARRAYAGG(name) FROM goods; 

9.JSON_OBJECTAGG()

1 -- {"1": "书", "2": "键盘", "3": "鼠标", "4": "手机", "5": null}
2 SELECT JSON_OBJECTAGG(id,name) FROM goods;
3 ?
4 -- error,因为id为5的name是NULL,JSON中键不能为NULL
5 SELECT JSON_OBJECTAGG(name,price) FROM goods; 

原文地址:https://www.cnblogs.com/mahaiwuji/p/12683632.html

时间: 2024-11-02 17:55:08

21.MySQL中的聚合函数的相关文章

Mysql中使用聚合函数对null值的处理

平时因为对于数据库研习的不深,所以在面试的时候问了一些平常遇到过的问题居然没法很肯定地回答出来,实在让自己很恼怒! 这次让我记忆深刻的一个问题是: 在mysql中使用聚合函数的时候比如avg(t),t是表中一个类型int型的字段,可为null,有三行数据,三行中的数据分别为:10,null,20,请问最后的结果是什么? 我的回答是15,在面试结束之后我尝试了一下结果没错,不过我对于聚集函数对null的处理貌似错了,我认为是聚合函数会将null值看作0,找了一番,博客中都认为是忽略null值,因为

Mysql中常用的函数

控制流函数IFNULL(expr1,expr2)如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境. mysql> select IFNULL(1,0); -> 1 mysql> select IFNULL(0,10); -> 0 mysql> select IFNULL(1/0,10); -> 10 mysql> select IFNULL(1/0,'yes');

Mysql中常用的函数汇总

Mysql中常用的函数汇总: 一.数学函数abs(x) 返回x的绝对值bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制)ceiling(x) 返回大于x的最小整数值exp(x) 返回值e(自然对数的底)的x次方floor(x) 返回小于x的最大整数值greatest(x1,x2,...,xn)返回集合中最大的值least(x1,x2,...,xn) 返回集合中最小的值ln(x) 返回x的自然对数log(x,y)返回x的以y为底的对数mod(x,y) 返回x/y的模(余数)pi(

在MongoDB中实现聚合函数

在MongoDB中实现聚合函数 随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加.这使得很多组织都在寻找一种经济的解决方案,比如NoSQL数据库,它提供了所需的数据存储和处理能力.扩展性和成本效率.NoSQL数据库不使用SQL作为查询语言.这种数据库有多种不同的类型,比如文档结构存储.键值结构存储.图结构.对象数据库等等. 我们在本文中使用的NoSQL是MongoDB,它是一种开

mysql中的group_concat函数的用法

1 本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . 2 MySQL中group_concat函数 3 完整的语法如下: 4 group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 5 基本查询 6 mysql> select * from aa; 7 +------+------+ 8 | id| name | 9 +-

Mysql中使用find_in_set函数查找字符串

mysql有个表的字段的存储是以逗号分隔的,如domain字段login.s01.yy.com,s01.yy.com,s02.yy.com.现在要查找s01.yy.com这个.我们用like查找好像不是非常准确.那就试试mysql中的find_in_set函数吧. SELECT find_in_set('a','a,b,c,d') as test

oracle中的聚合函数count、max、min、sum、avg以及NVL函数的用法

oracle中的聚合函数count.max.min.sum.avg以及NVL函数的用法 分组函数聚合函数对一组行中的某个列执行计算执行计算并返回单一的值.聚合函数忽略空值.聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用,所以有的时候也把其称之为分组函数.这类函数通常应用于报表统计中,以下展示Oracle常用的聚合函数的应用. 分组函数的介绍 作用于一组数据,并对一组数据返回一个值. 常见的分组函数有: Count 用来计算有效数据的数量 Min 返回一个数字列或计算列的最小

05 LINQ中的聚合函数Part-2

LINQ中的聚合函数最常用的有Sum(),Average(),Max(),Min().顾名思义,这些聚合函数分别用于获取记录集中的“总和”.“平均数”.“最大值”.“最小值”.这些函数的使用也非常简单,下面举例介绍. 1) Sum() List<int> intInList = new List<int>() { 1, 3, 3, 2, 7, 8, 4, 5, 6, 3, 9 }; int sumOfList = intInList.Sum(); Console.WriteLine

MySQL 中的 FOUND_ROWS() 函数

移植sql server 的存储过程到mysql中,遇到了sql server中的: IF @@ROWCOUNT < 1 对应到mysql中可以使用 FOUND_ROWS() 函数来替换. 1. found_rows() 函数的文档: http://dev.mysql.com/doc/refman/5.6/en/information-functions.html#function_found-rows 1)found_rows() 的第一种使用情况(带有SQL_CALC_FOUND_ROWS,