Oracle 笔记2

Oracle 笔记2

开发工具与关键技术:PLSQL SQL语句
作者:街角
撰写时间:20190407

分组函数

AVG 平均值:
max 最大:
min 最小:
sum 合计:
SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)
FROM employees

count 计数:COUNT() 返回表中记录总数,适用于任意数据类型
SELECT COUNT(
)
FR组函数忽略空值。
OM employees
NVL函数使分组函数无法忽略空值。
DISTINCT :COUNT(DISTINCT 列名)返回列里非空且不重复的记录总数
SELECT COUNT(DISTINCT department_id)
FROM employees;
GROUP BY :分组数据 将表中的数据分成若干组
明确:WHERE一定放在FROM后面
在SELECT 列表中所有未包含在组函数中的列都应该包含 在 GROUP BY 子句中。
SELECT department_id,a,b,c, AVG(salary)
FROM employees
GROUP BY department_id ,a,b,c;
包含在 GROUP BY 子句中的列不必包含在SELECT 列表中
SELECT AVG(salary)
FROM employees
GROUP BY department_id ;
GROUP BY子句中包含多个列
SELECT department_id dept_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;
HAVING :过滤分组
行已经被分组。使用了组函数。满足HAVING 子句中条件的分组将被显示。
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)>10000
嵌套组函数
显示各部门平均工资的最大值
SELECT MAX(AV(salary))
FROM employees
GROUP BY department_id;

子查询

子查询 (内查询) 在主查询之前一次执行完成。
子查询的结果被主查询(外查询)使用 。
查询要包含在括号内。
将子查询放在比较条件的右侧。
单行操作符对应单行子查询,多行操作符对应多行子查询。

子查询中的 HAVING 子句
首先执行子查询,向主查询中的HAVING 子句返回结果。

多行子查询
返回多行。使用多行比较操作符。
in 等于列表中的任意一个
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';

如何使用子查询。
在查询时基于未知的值时,应使用子查询。

exists表示()内子查询语句返回结果不为空说明where条件成立就会执行主sql
语句,如果为空就表示where条件不成立,sql语句就不会执行。
not exists和exists相反,子查询语句结果为空,则表示where条件成立,执行sql 语句。负责不执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值