第二十二天:总结

group by理解

1. 分组函数:avg, min, max, sum.....

分组函数作用于一组数据,并对一组数据返回一个值

2. group by分组,对 表按照 XXX 条件,将一个表划分成 YYY 个较小的组,然后将 YYY 个组分别传递给分组函数 (avg, min, max, .....) ,由于分组函数输入的是一组数据,输出的是一个值,那么就有 YYY 个值输出(因为有 YYY 个组嘛)

我觉得group by 的价值就是为分组函数传递数据的

3. select department_id,avg(salary) 

  from employees

如果没有order by  ,它的分析如下:

 department_id 有多个值输出

avg(salary) 分组函数,一个值输出

此时没有group by  它就默认的按照整个表,而没有分割

那么在表中的表现形式是:

 

 

 

department_id                avg(salary)

--------------

--------------               -----------

--------------

得到的表是不对的,因此不写group by ... 是错的

4. select department_id, avg(salary)

  from employees

  group by department_id

 

 

 

group by 会按照 department_id 的个数 XXX ,将 employees 表分成 XXX 个组,分组函数是接受一组数据,输出一个值,所以 avg(salary) 值的个数为 XXX, 它和 department_id 的个数一致

department_id              avg(salary)

-------------              ------------

-------------              ------------

-------------              ------------

5. select department_id, employee_id, avg(salary)

  from employees

group by department_id, employee_id

group by employee_id, department_id

得到的结果是一致的,分组的个数是按照employee_id department_id ,个数最大值即为分的组数

 

-----------------------------------------------------------------------------------

 

6. 扒的一些话:

 

(1) Until now, all group functions have treated the table as one large group of information. At times, you need to divide the table of information into smaller groups. This can be done by using the GROUP BY clause.

到现在为止,所有 分组函数将表看做一个大的信息群 。有时,你需要 将表信息 分成较小的组。这可以通过使用GROUP BY 子句。

 

(2) You can use the GROUP BY clause to divide the rows in a table into groups. You can then use the group functions to return summary information for each group. 

您可以使用GROUP BY 子句,以分隔成组表中的行。然后,您可以使用组函数返回每个组的摘要信息。

 

(3) GROUP BY... was added to SQL because aggregate functions (like SUM) return the aggregate of all column values every time they are called, and without the GROUP BY function it was impossible to find the sum for each individual group of column values. 

GROUP BY...之所以加到 SQL 中去是因为集合函数 ( SUM) 每当他们被访问时就会返回集合所有栏目的值,而且没有 GROUP BY 的话就不能够找出单独一种栏目所累计的值了。

 

(4) GROUP BY 子句用来为结果集中的每一行产生聚合值。如果聚合函数 (分组函数) 没有使用 GROUP BY  子句,则只为  SELECT  语句报告一个聚合值。

 

(5) select  语句中可以使用 group by  子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,

 

(6) 对查询结果分组的目的是为了细化集函数的作用对象。如果未对查询结果分组,集函数将作用于整个查询结果,即整个查询结果只有一个函数值。否则,集函数将作用于每一个组,即每一组都有一个函数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值