OraclePL/SQL单行函数和组函数详解(4)
来源:asp之家 发布时间:2010-07-28 13:02:00
标签:oracle,pl,sql,函数
379
380 EMPTY_BLOB()
381 该函数没有参数,函数返回 一个空的BLOB位置指示符。函数用于初始化一个BLOB变量或BLOB列。
382
383 EMPTY_CLOB()
384 该函数没有参数,函数返回 一个空的CLOB位置指示符。函数用于初始化一个CLOB变量或CLOB列。
385
386 GREATEST()
387 exp_list是一列表达式,返回其中最大的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个,那么返回的结果是varchar2数据类型, 同时使用的比较是非填充空格类型的比较。
388
389 LEAST()
390 exp_list是一列表达式,返回其中最小的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个,将返回的结果是varchar2数据类型, 同时使用的比较是非填充空格类型的比较。
391
392 UID
393 该函数没有参数,返回唯一标示当前数据库用户的整数。
394
395 USER
396 返回当前用户的用户名
397
398 USERENV()
399 基于opt返回包含当前会话信息。opt的可选值为:
400
401 ISDBA 会话中SYSDBA脚色响应,返回TRUE
402 SESSIONID 返回审计会话标示符
403 ENTRYID 返回可用的审计项标示符
404 INSTANCE 在会话连接后,返回实例标示符。该值只用于运行Parallel 服务器并且有 多个实例的情况下使用。
405 LANGUAGE 返回语言、地域、数据库设置的字符集。
406 LANG 返回语言名称的ISO缩写。
407 TERMINAL 为当前会话使用的终端或计算机返回操作系统的标示符。
408
409 VSIZE()
410 x是一个表达式。返回x内部表示的字节数。
411
412 SQL中的组函数
413
414 组函数也叫集合函数,返回基于多个行的单一结果,行的准确数量无法确定,除非查询被执行并且所有的结果都被包含在内。与单行函数不同的是,在解析时所有的行都是已知的。由于这种差别使组函数与单行函数有在要求和行为上有微小的差异.
415
416 组(多行)函数
417
418 与单行函数相比,oracle提供了丰富的基于组的,多行的函数。这些函数可以在select或select的having子句中使用,当用于select子串时常常都和GROUP BY一起使用。
419
420 AVG([{DISYINCT|ALL}])
421 返回数值的平均值。缺省设置为ALL.
422
423SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal) FROM scott.emp
424
425AVG(SAL) AVG(ALL SAL) AVG(DISTINCT SAL)
426
4271877.94118 1877.94118 1916.071413
428
429
430 COUNT({*|DISTINCT|ALL} )
431 返回查询中行的数目,缺省设置是ALL,*表示返回所有的行。
432
433 MAX([{DISTINCT|ALL}])
434 返回选择列表项目的最大值,如果x是字符串数据类型,他返回一个VARCHAR2数据类型,如果X是一个DATA数据类型,返回一个日期,如果X是numeric数据类型,返回一个数字。注意distinct和all不起作用,应为最大值与这两种设置是相同的。
435
436 MIN([{DISTINCT|ALL}])
437 返回选择列表项目的最小值。
438
439 STDDEV([{DISTINCT|ALL}])
440 返回选者的列表项目的标准差,所谓标准差是方差的平方根。
441
442 SUM([{DISTINCT|ALL}])
443 返回选择列表项目的数值的总和。
444
445 VARIANCE([{DISTINCT|ALL}])
446 返回选择列表项目的统计方差。
447
448 用GROUP BY给数据分组
449
450 正如题目暗示的那样组函数就是操作那些已经分好组的数据,我们告诉数据库用GROUP BY怎样给数据分组或者分类,当我们在SELECT语句的SELECT子句中使用组函数时,我们必须把为分组或非常数列放置在GROUP BY子句中,如果没有用group by进行专门处理,那么缺省的分类是将整个结果设为一类。
451
452select stat,counter(*) zip_count from zip_codes GROUP 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
0
投稿
猜你喜欢
- 代码如下:CREATE TABLE [dbo].[TbGuidTable]( [TableName] [varchar](50) NOT N
- 英文原文:http://www.smashingmagazine.com/2008/08/18/译文原文:http://blog.bingo
- 通常,当一个页面有太多信息要显示,而一页塞又不下所有信。为了请求速度、美观以及其他的各种理由,分页就会被我们请过来。让我们的用户可以选择是否
- Dethe Elza (delza@livingcode.org), 高级技术架构师, Blast Radius &n
- 如果你想让你的IIS支持wml,做个wap网站,只需作小小的改变就行了.虽然目前支持wml的虚拟主机极少,但是自己在本机上玩玩也好的.首先在
- 第一章:日志管理 1.forcing log switchessql> alter system switch logfile;2.f
- 最近遇到SQL Server 2005 输入框不能输入中文,在网上查了N久,试验了十几次奏这个法子有用:“把你表中的自动编号列放到最后面”。
- 数据库查询优化的实用技巧:本文中,abigale代表查询字符串,ada代表数据表名,alice代表字段名。技巧一:问题类型:ACCESS数据
- RSS是 Really Simple Syndication的缩写(对rss2.0而言,是这三个词的缩写,对rss1.0而言则是RDF Si
- 一个非常简单的将半角"转换为中文"的asp函数function new_str(str) 
- 编者按,网站中让人惊喜的往往是那一点细节,只要用心留意你将发现那些美好的用户体验就在身边。新蛋网想自主控制链接在原窗口还是新窗口中打开?看看
- 1、Export/Import的用处 Oracle Export/Import工具用于在数据库之间传递数据。 Export从数据库中导出数据
- Function closeUBB(strContent) '*************************
- 我们经常会用到表格数据,在做表格的时候,一般都喜欢隔行变色,使表格表现数据的时候非常的清晰。如图,我设计的一个表格表现的样式:在网上找到一个
- 采用双重循环。把图片进行“.”分割后名字问前面部分,那其余数据库中的 图片路径记录进行对比 采用vb的InStr函数 如果存在的话返回值&g
- 1、为什么淘宝的手机频道页面,竟然会有笔记本、数码相机、随身听,甚至是游戏之类的栏目,而且还有一个“数码·生活”栏目是包括以上这些设备的综合
- 类的定义 类定义有三种基本方法,1、创建并能返回特定类型的对象的函数(工厂函数),例如:function Co(){ var o = new
- 腾讯“月捐计划”倡导爱心人士,通过每月小额捐款的形式,长期关注和支持公益项目。并和亿万爱心网友一起,每人每月1份爱,点滴付出,汇成爱海,形成
- 原来看到这个代码的时候,觉得功能不错,调试并整理了一下也许大家用的到,对于越来越注重用户体验的今天,这种功能一定很受欢迎,当然本例子只是一个
- 别误会,IE是不支持CSS3高级选择器,包括最新的IE8(详见《CSS选择器的浏览器支持》),但是CSS选择器的确是很有用的,它可以大大的简