五个常用的聚合函数

  • COUNT
  • SUM
  • AVG
  • MAX
  • MIN
  • 计算行数
  1. SELECT COUNT(*) FROM `Product`
  2. -- 结果是 7
  3. SELECT COUNT(purchase_price) FROM `Product`
  4. -- 结果是 6
  5. -- 如果 COUNT 的参数是列名,会把列值为 NULL 的情况排除,计算 NULL 之外的数据行。
  • 使用聚合函数删除重复值
  1. SELECT COUNT(DISTINCT product_type) FROM `Product`;

注意,在聚合函数的参数中使用 DISTINCT,可以删除重复数据。

对表分组

  • 计算各个种类商品的个数
  1. SELECT product_type, count(*) FROM `Product` GROUP BY product_type;

聚合键分组列,指的都是 GROUP BY 后面跟的参数。

注意,书写顺序:

  1. SELECT -> FROM -> WHERE -> GROUP BY

聚合键中的 NULL

  1. SELECT product_name, purchase_price, COUNT(*)
  2. FROM `Product`
  3. GROUP BY purchase_price
  4. -- purchase_price 字段中有NULL的情况,会展示出字段值为不确定的一行

GROUP BY 和 WHERE 并用时 SELECT 语句的执行顺序

  1. FROM -> WHERE -> GROUP BY -> SELECT

聚合函数和 GROUP BY 子句有关的常见错误

1、在 SELECT 子句中书写了多余的列

  1. SELECT product_type, purchase_price, COUNT(*)
  2. FROM Product
  3. GROUP BY product_type
  4. -- 这个语法仅仅 MySQL 自己支持,其他 DBMS 都不支持。

可以做如下修改,正确写法如下:

  1. SELECT product_type, purchase_price, COUNT(*)
  2. FROM Product
  3. GROUP BY product_type, purchase_price

使用聚合函数时,SELECT子句中仅仅能存在3种元素

  • 常数
  • 聚合函数
  • GROUP BY 子句中指定的列名(也就是聚合键)

1、在 GRUOP BY 子句中写了列的别名