oraclegroupby和聚合函数
AVG(平均值)和 SUM (合计)函数
可以对数值型数据使⽤AVG 和 SUM 函数。
AVG组函数忽略空值
--在组函数中使⽤NVL函数
--求平均值
sum(expr)/count(nvl(expr,0))
MIN(最⼩值)和 MAX(最⼤值)函数
可以对任意数据类型的数据使⽤ MIN 和 MAX 函数。
SELECT MIN(hire_date),MAX(hire_date)
FROM employees;
COUNT(*) 返回表中记录总数,适⽤于任意数据类型。
SELECT COUNT(*)
FROM employees
WHERE department_id =50;
COUNT(expr) 返回expr不为空的记录总数。
COUNT(DISTINCT expr)返回expr⾮空且不重复的记录总数
SELECT COUNT(DISTINCT department_id)
FROM employees;
Group by
可以使⽤GROUP BY⼦句将表中的数据分成若⼲组
①、WHERE⼀定放在FROM后⾯
select department_id ,avg(salary)
from employees
--where department_id in(20,30,40)
group by department_id
②、在SELECT 列表中所有未包含在组函数中的列都应该包含在 GROUP BY ⼦句中。
SELECT department_id,AVG(salary)
FROM employees
GROUP BY department_id ;
③、包含在 GROUP BY ⼦句中的列不必包含在SELECT 列表中
SELECT AVG(salary)
FROM employees
GROUP BY department_id ;
④、使⽤多个列分组
select department_id ,job_id,avg(salary)
from employees
group by department_id,job_id
⑤、可以在 HAVING ⼦句中使⽤组函数。
SELECT department_id,AVG(salary)
FROM employees
HAVING AVG(salary)>8000
GROUP BY department_id;
注意:不能在 WHERE ⼦句中使⽤组函数。
⑥、可以在order by ⼦句中使⽤组函数
select department_id,avg(salary)
from employees
having avg(salary)>6000
group by department_id
order by avg(salary)
oracle group by 使⽤详解
语法:
最常见的例⼦(通俗易懂)
--基本⽤法:按部门统计销售额
select deptno,sum(comm)from sales group by deptno;
HAVING ⼦句:Wheret和having⼦句都⽤来筛选数据,但是where是针对原数据进⾏筛选,⽽having⼦句只是针对汇总后的结果进⾏
select deptno, job,avg(sal)
from emp
group by的用法及原理详解where hiredate >= to_date('1981-05-01','yyyy-mm-dd')
group by deptno,job
having avg(sal)>1200
order by deptno,job;
--Order by排序:如果order by后跟着多个字段,默认排序是先对第⼀个字段升序排序,然后再排第⼆个字段
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论