HONGWEI's Blog

MySQL 教程:聚合函数

数据库 132

聚合函数特点

  1. 组函数,将字段当作一个组进行统计,可结合分组GROUP BY联合使用
  2. 不用GROUP BY,中间结果集中的所有行自动形成一组,然后计算组合数
  3. 每个组函数接收一个参数(字段名或者表达式) 统计结果中默认忽略字段为NULL的记录,不参与计算
  4. 要想列值为NULL的行也参与组函数的计算,必须使用IFNULL函数对NULL值做转换。
  5. 不允许出现嵌套 比如sum(max(...))

内容

SELECT * FROM fruits;

id  sid name    price
1   101 apple   5.20
2   101 blackberry  10.20
3   102 orange  11.20
4   105 melon   8.20
5   102 banana  10.30
6   102 grape   5.30
7   103 coconut 9.20
8   101 cherry  3.20
9   103 apricot 2.20
10  104 lemon   6.40
11  104 berry   7.60
12  106 mango   15.60

COUNT(*) 统计行的数量。非NULL值

统计id和sid 的行数

SELECT COUNT(id),COUNT(sid) FROM fruits;

count(id)   count(sid)
12  12

统计当sid为103时id的行数

SELECT COUNT(id) FROM fruits WHERE SID = 103;

count(id)
2

DISTINCT 过滤掉重复行

SELECT COUNT(Sid) AS SID FROM fruits;

SID
12

SELECT COUNT(DISTINCT Sid) AS SID FROM fruits;

SID
6

MAX(*) 最大值

SELECT MAX(id) FROM fruits;

max(id)
12

MIN(*) 最小值

SELECT MIN(id) FROM fruits;

min(id)
1

AVG(*) 平均值

SELECT AVG(price) FROM fruits WHERE ID IN (1,2,3);

AVG(price)
8.866667

SUM(*) 累加和

SELECT SUM(price) FROM fruits WHERE SID = 102;

SUM(price)
26.80

GROUP BY 组合使用

SELECT
  MAX(ID),
  MIN(SID),
  COUNT(SID),
  GROUP_CONCAT(NAME),
  AVG(PRICE),
  SUM(PRICE)
FROM
  fruits
GROUP BY SID;

MAX(ID) MIN(SID)    COUNT(SID)  group_concat(NAME)  AVG(PRICE)  SUM(PRICE)
8   101 3   apple,blackberry,cherry 6.200000    18.60
6   102 3   orange,banana,grape 8.933333    26.80
9   103 2   coconut,apricot 5.700000    11.40
11  104 2   lemon,berry 7.000000    14.00
4   105 1   melon   8.200000    8.20
12  106 1   mango   15.600000   15.60

本文链接: https://blog.zhwei.cn/article/mysql-jiao-cheng-ju-he-han-shu
版权声明: 本博客所有文章除特别声明外,均遵循 CC 4.0 BY-NC-SA 版权协议。转载请附上原文链接!