分组统计

本文详细介绍了OracleSQL中的分组统计,包括分组依据、GROUPBY子句的使用、查询规则(不使用GROUPBY时的统计函数限制,以及使用GROUPBY时的字段选择),并展示了如何按部门和职位进行统计分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

分组统计

根据部门编号分组,查询每个部门的编号、人数、平均工资

根据职位分组,统计出每个职位的人数、最低工资与最高工资

如果查询不使用 GROUP BY 子句,那么 SELECT 子句中只允许出现统计函数,其他任何字段不允许出现

如果查询中使用了 GROUP BY 子句,那么 SELECT 子句中只允许出现分组字段、统计函数,其他任何字段都不允许出现 

统计函数允许嵌套,但是嵌套之后的 SELECT 子句里面只允许出现嵌套函数,而不允许出现其他任何字段,包括分组字段 


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

分组统计

下面来介绍一下分组统计。什么是分组统计?什么情况下可以分组?

例如,部门之间进行拔河比赛,那么分组的依据就是部门,因为每个员工都有相同的部门编号

例如,上厕所,男女各一边,实际上这也是一个分组

那么也就证明了一点:分组的前提是存在重复

select [distinct] * | 分组列 [ 别名 ] , 分组列 [ 别名 ] ...
from 表名称 [ 别名 ], 表名称 [ 别名 ],... 
[where 限定条件 (s)]
[group by 分组字段 , 分组字段 , 分组字段 ,...] 
[order by  排序字段 [asc | desc], 排序字段 [asc | desc],...]

这个语法格式是在前面语法格式基础上又增加了一行条件,

即 group by 子句,主要实现对筛选的行分组。其他行的作用和以前的完全一样

根据部门编号分组,查询每个部门的编号、人数、平均工资

SQL> select deptno,count(*),avg(sal)
  2  from emp
  3  group by deptno;

    DEPTNO   COUNT(*)   AVG(SAL)
---------- ---------- ----------
        30          6 1566.66667
        10          3 2916.66667
        20          3 2258.33333

根据职位分组,统计出每个职位的人数、最低工资与最高工资

SQL> select job,count(*),min(sal),max(sal)
  2  from emp
  3  group by job;

JOB                  COUNT(*)   MIN(SAL)   MAX(SAL)
------------------ ---------- ---------- ----------
CLERK                       3        800       1300
SALESMAN                    4       1250       1600
ANALYST                     1       3000       3000
MANAGER                     3       2450       2975
PRESIDENT                   1       5000       5000

实际上,group by 子句之所以使用着比较麻烦,是因为分组的时候有一些约束条件

如果查询不使用 GROUP BY 子句,那么 SELECT 子句中只允许出现统计函数,其他任何字段不允许出现

如果查询中使用了 GROUP BY 子句,那么 SELECT 子句中只允许出现分组字段、统计函数,其他任何字段都不允许出现 

统计函数允许嵌套,但是嵌套之后的 SELECT 子句里面只允许出现嵌套函数,而不允许出现其他任何字段,包括分组字段 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙子味冰可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值