Oracle 学习:PL/SQL循序渐进全面学习教程
课程四 组函数
本课重点:
1、了解可用的组函数
2、说明每个组函数的使用方法
3、使用GROUP BY
4、通过HAVING来限制返回组
注意:以下实例中标点均为英文半角
一、概念:
组函数是指按每组返回结果的函数。
组函数可以出现在SELECT和HAVING 字段中。
GROUP BY把SELECT 的结果集分成几个小组。
HAVING 来限制返回组,对RESULT SET而言。
二、组函数:(#号的函数不做重点)
1、AVG
2、COUNT
3、MAX
4、MIN
5、STDDEV #
6、SUM
7、VARIANCE #
语法:
SELECT column, group_function
from table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY column];
实例1:一个混合实例,说明所有问题:
SQL> SELECT AVG(salary), MAX(salary), MIN(salary),
2 SUM(salary)
3 from s_emp
4 WHERE UPPER(title) LIKE ’SALES%’;
AVG(SALARY) MAX(SALARY) MIN(SALARY) SUM(SALARY)
----------- ----------- ----------- -----------
1476 1525 1400 7380
说明:很多函数,我们在讲函数的已经向大家介绍过,但在此为何叫分组函数呢,主要是因为它们可以与GROUP
BY来形成对不同组的计算,相当于在很多值中进行挑选。
* MIN MAX函数可以接任何数据类型。
如果是MIN(last_name), MAX(last_name),返回的是什么呢?
千万记住,不是指LAST_NAME的长度,而是指在FIRST字母的前后顺序,第一个相同,然后比较第二个,如:xdopt
> cssingkdkdk > adopt > acccc
实例2:
SQL> SELECT COUNT(commission_pct)
2 from s_emp
3 WHERE dept_id = 31;
返回所有非空行个数
三、GROUP BY的应用:
先看一个简单实例:
SQL> SELECT credit_rating, COUNT(*) ”# Cust”
2 from s_customer
3 GROUP BY credit_rating;
注意这里别名的应用,复习一下从前的课程,加了引号后,就可以用特殊字符,但也仅有三个:#$_,什么对象的
名字都如此。当然空格也是可以的。
复杂实例:
SQL> SELECT title, SUM(salary) PAYROLL
2 from s_emp
3 WHERE title NOT LIKE ’VP%’
相关文档:
【SQL SERVER 数据库实用SQL语句】
1.按姓氏笔画排序:
Select * from TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as
2.分页SQL语句
select * from(select (row_number() OVER (ORDER BY tab.ID Desc)) as rownum,tab.* from 表名 As tab) As t where rownum between 起始位置 And 结束位置
......
1: 加大回滚段(可以给500M甚至1G)
2:分段commit
iCount :=1;
for rec in cur_name loop
insert into table_name (.....);//DML Lanaguage
if iCount =2000 then
commit;
iCount:=0;
else
iCount:= iCount +1;
......
ORACLE 10G中新增的MODEL子句可以用来进行行间计算。MODEL子句允许像访问数组中元素那样访问记录中的某个列。这就提供了诸如电子表格计算之类的计算能力。
1、MODEL子句示例
下面这个查询获取2003年内由员工#21完成的产品类型为#1和#2的销量,并根据2003年的销售数据预测出2004年1月、2月、3月的销量。
......
课程 二 PL/SQL 查询行函数
本课重点:
1、掌握各种在PL/SQL中可用的ROW函数
2、使用这些函数的基本概念
3、SELECT语句中使用函数
4、使用转换函数
注意:以下实例中标点均为英文半角
一、FUNCTION的作用:
进行数据计算,修改 ......