打印本文 打印本文 关闭窗口 关闭窗口
Oracle中PL/SQL单行函数和组函数详解
作者:武汉SEO闵涛  文章来源:敏韬网  点击数4365  更新时间:2009/4/22 22:02:46  文章录入:mintao  责任编辑:mintao
p;BY state;
453
454ST ZIP_COUNT
455-- ---------
456AK 360
457AL 1212
458AR 1309
459AZ 768
460CA 3982 
461
462  在这个例子中,我们用state字段分类;如果我们要将结果按照zip_codes排序,可以用ORDER BY语句,ORDER BY子句可以使用列或组函数。
463
464select stat,counter(*) zip_count from zip_codes GROUP BY state ORDER BY COUNT(*) DESC;
465
466ST COUNT(*)
467-- --------
468NY 4312
469PA 4297
470TX 4123
471CA 3982 
472
473  用HAVING子句限制分组数据
474
475  现在你已经知道了在查询的SELECT语句和ORDER BY子句中使用主函数,组函数只能用于两个子串中,组函数不能用于WHERE子串中,例如下面的查询是错误的 :
476
477错误
478SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept=''''OUTSIDE'''' AND SUM(sale_amount)>10000 GROUP BY sales_clerk
479 
480
481  这个语句中数据库不知道SUM()是什么,当我们需要指示数据库对行分组,然后限制分组后的行的输出时,正确的方法是使用HAVING语句:
482
483SELECT sales_clerk,SUN(sale_amount) 
484FROM gross_sales 
485WHERE sales_dept=''''OUTSIDE'''' 
486GROUP BY sales_clerk
487HAVING SUM(sale_amount)>10000; 
488
489  嵌套函数
490
491  函数可以嵌套。一个函数的输出可以是另一个函数的输入。操作数有一个可继承的执行过程。但函数的优先权只是基于位置,函数遵循由内到外,由左到右的原则。嵌套技术一般用于象DECODE这样的能被用于逻辑判断语句IF.THENELSE的函数。
492
493  嵌套函数可以包括在组函数中嵌套单行函数,或者组函数嵌套入单行函数或组函数中。比如下面的例子:
494
495SELECT deptno, GREATEST(COUNT(DISTINCT job),COUNT(DISTINCT mgr) cnt,
496COUNT(DISTINCT job) jobs,
497COUNT(DISTINCT mgr) mgrs
498FROM emp
499GROUP BY deptno;
500
501DEPTNO CNT JOBS MGRS
502------ --- ---- ----
50310 4 4 2
50420 4 3 4
50530 3 3 2

上一页  [1] [2] [3] [4] [5] [6] 

打印本文 打印本文 关闭窗口 关闭窗口