当前位置:   article > 正文

深入数据库聚合与分组:让数据分析更精准_数据 聚合 划分区间

数据 聚合 划分区间

在这里插入图片描述

聚合和分组是数据库中两个重要的概念,主要用于对数据进行统计和分析。

1. 聚合 (Aggregation)

聚合操作是指对一组数据执行计算,返回一个单一的结果。常见的聚合函数包括:

  • 计数 (COUNT): 计算某个字段或记录的数量。

    SELECT COUNT(*) FROM employees;
    
    • 1
  • 求和 (SUM): 计算某个数值字段的总和。

    SELECT SUM(salary) FROM employees;
    
    • 1
  • 最小值 (MIN): 获取某个字段的最小值

    SELECT MIN(salary) FROM employees;
    
    • 1
  • 最大值 (MAX): 获取某个字段的最大值。

    SELECT MAX(salary) FROM employees;
    
    • 1
  • 平均值 (AVG): 计算某个数值字段的平均值。

    SELECT AVG(salary) FROM employees;
    
    • 1

2. 分组 (Grouping)

分组操作是指将数据按某个字段进行分组,然后对每个分组进行聚合操作。使用 GROUP BY 语句可以实现分组。常见的用法如下:

  • 基本分组:
    按部门统计员工的数量:

    SELECT dept, COUNT(*) 
    FROM employees 
    GROUP BY dept;
    
    • 1
    • 2
    • 3
  • 分组后的聚合操作:
    按部门统计每个部门的平均工资:

    SELECT dept, AVG(salary) 
    FROM employees 
    GROUP BY dept;
    
    • 1
    • 2
    • 3

3. HAVING 子句

HAVING 子句用于对分组后的结果进行过滤。它类似于 WHERE 子句,但 WHERE 是在分组前过滤数据,而 HAVING 是在分组后过滤数据。

  • 使用 HAVING 过滤分组后的结果:
    统计每个部门中员工数量超过5的部门的平均工资:
    SELECT dept, AVG(salary) 
    FROM employees 
    GROUP BY dept 
    HAVING COUNT(*) > 5;
    
    • 1
    • 2
    • 3
    • 4

举例1

mysql> select * from items;
+----+-----------+
| id | item      |
+----+-----------+
|  1 |         2 |
|  2 |      NULL |
|  3 |         9 |
|  4 | 534214123 |
+----+-----------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

当他执行以下 SQL 语句:

select count(*), count(item) 
from items;
  • 1
  • 2

将会得到的结果是:

+----------+-------------+
| count(*) | count(item) |
+----------+-------------+
|        4 |           3 |
+----------+-------------+
  • 1
  • 2
  • 3
  • 4
  • 5

这是因为 count(*) 会计算表中的所有行数,而 count(column_name) 只会计算指定列中非 NULL 值的行数。在 items 表中,总共有 4 行数据,其中 item 列中有 1 行数据为 NULL 值。因此,count(*) 的结果是 4,count(item) 的结果是 3。

SELECT SUM(total)
FROM orders
WHERE deal = true AND unit_price > 1000;
  • 1
  • 2
  • 3

在这个查询中:

  • SUM(total) 计算满足条件的订单的总值。
  • WHERE deal = true AND unit_price > 1000 限定条件:已成交的订单且单价超过 1000。

聚合函数

聚合函数在SQL中用于对一组值执行计算,并返回单一值。常用的聚合函数包括:

  1. COUNT() - 计算行数或非NULL列的数量。

    SELECT COUNT(*) FROM employee;
    
    • 1
  2. SUM() - 计算某列的总和。

    SELECT SUM(salary) FROM employee;
    
    • 1
  3. MIN() - 返回某列的最小值。

    SELECT MIN(salary) FROM employee;
    
    • 1
  4. MAX() - 返回某列的最大值。

    SELECT MAX(salary) FROM employee;
    
    • 1
  5. AVG() - 计算某列的平均值。

    SELECT AVG(salary) FROM employee;
    
    • 1

分组

在SQL中,使用 GROUP BY 子句将结果集按一个或多个列进行分组,通常与聚合函数一起使用。通过分组,可以对每个组进行聚合计算。以下是详细解释和举例:

  1. GROUP BY - 将结果集按照一个或多个列进行分组。

    SELECT dept, AVG(salary)
    FROM employee
    GROUP BY dept;
    
    • 1
    • 2
    • 3

    以上查询语句将employee表按部门分组,并计算每个部门的平均工资。

  2. COUNT() 和 SUM()

    • SELECT COUNT(*) 计算表中所有行的数量,包括NULL值。
    • SELECT COUNT(column) 仅计算指定列中非NULL值的数量

关于聚合函数和分组操作的详细解释如下:

举例2

  • 查询每个部门的最高工资

    SELECT dept, MAX(salary) AS max_salary
    FROM employee
    GROUP BY dept;
    
    • 1
    • 2
    • 3

    查询每个部门的最高工资。

  • 查询工资最低的员工的工资信息

    SELECT dept, MIN(salary) AS min_salary
    FROM employee
    GROUP BY dept;
    
    • 1
    • 2
    • 3

    查询每个部门工资最低的员工的工资。

  • 查询每个部门工资总和不超过两万的部门及其总工资开支

    SELECT dept, SUM(salary) AS total_salary
    FROM employee
    GROUP BY dept
    HAVING MAX(salary) < 20000;
    
    • 1
    • 2
    • 3
    • 4

    查询工资最高不超过两万的部门及其总工资开支。

举例3

HAVING 子句中使用聚合函数进行筛选,

SELECT dept, SUM(salary) 
FROM employee 
GROUP BY dept 
HAVING MAX(salary) < 20000;
  • 1
  • 2
  • 3
  • 4

可以筛选出工资最高不超过两万的部门。

聚合函数和分组操作在SQL中是非常有用的功能,允许用户对数据进行各种计算和分析。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/765314
推荐阅读
相关标签
  

闽ICP备14008679号