oracle sql学习二

分组函数:


了解组函数。
描述组函数的用途。
使用GROUP BY 子句对数据分组。
使用HAVING 子句过滤分组结果集。

组函数的类型:AVG(平局数) COUNT(数量) sum(总和) max(最大值) min(最小值)

select avg(salary),sum(salary)/count(salary) from employees;

得出的结论是avg(salary)=sum(salary)/count(salary)

COUNT( expr ) 返回 expr 不为空 的记录总数
avg(expr) 得出的也是expr不为空的平均值。
COUNT( DISTINCT expr ) 返回 expr 非空且不重复 的记录总数

分组:

可以使用GROUP BY子句将表中的数据分成若干组

明确:WHERE一定放在FROM后面,所以group by 一定在where后面。


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_iddept_id,job_id, SUM(salary)

FROM     employees

GROUP BY department_id,job_id ;

不能在 WHERE 子句中使用组函数。
可以在 HAVING 子句中使用组函数。

SELECT   department_id,AVG(salary)

FROM     employees

WHERE    AVG(salary) > 8000

GROUP BY department_id;

上述是错误的


SELECT   department_id, MAX(salary)

FROM     employees

GROUP BY department_id

HAVING   MAX(salary)>10000 ;

上述是正确的

having的位置比较灵活,可以在group by之前也可以在group by之后。

子查询:

子查询需要注意any(任一) 和all(任意)的区别:

返回其它部门中比job_id‘IT_PROG’部门任一工资低的员工的员

              工号、姓名、job_id以及salary

SELECT employee_id,last_name, job_id, salary

FROM   employees

WHERE  salary < ANY

                    (SELECT salary

                     FROM   employees

                     WHERE  job_id = 'IT_PROG')

AND    job_id <> 'IT_PROG';

比该部门的任一一个员工的工资低就行,其实另一层意思就是比该部门最大的工资低就行。


返回其它部门中比job_id‘IT_PROG’部门所有工资都低的员工

            的员工号、姓名、job_id以及salary

SELECT employee_id,last_name, job_id, salary

FROM   employees

WHERE  salary < ALL

                    (SELECT salary

                     FROM   employees

                     WHERE  job_id = 'IT_PROG')

AND    job_id <> 'IT_PROG';

比该部门的任意一个员工的工资都低,其实另一层意思就是比该部门最小的工资低都低。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值