zoukankan      html  css  js  c++  java
  • oracle易忘函数用法(6)

    LEAST()

    exp_list是一列表达式,返回其中最小的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个,将返回的结果是varchar2数据类型,同时使用的比较是非填充空格类型的比较。

    UID

    该函数没有参数,返回唯一标示当前数据库用户的整数。

    USER

    返回当前用户的用户名

    USERENV()

    基于opt返回包含当前会话信息。opt的可选值为:

    ISDBA  会话中SYSDBA脚色响应,返回TRUE

    SESSIONID  返回审计会话标示符

    ENTRYID 返回可用的审计项标示符

    INSTANCE在会话连接后,返回实例标示符。该值只用于运行Parallel 服务器并且有 多个实例的情况下使用。

    LANGUAGE返回语言、地域、数据库设置的字符集。

    LANG返回语言名称的ISO缩写。

    TERMINAL为当前会话使用的终端或计算机返回操作系统的标示符。

    VSIZE()            x是一个表达式。返回x内部表示的字节数。

    二、SQL中的组函数

    组函数也叫集合函数,返回基于多个行的单一结果,行的准确数量无法确定,除非查询被执行并且所有的结果都被包含在内。与单行函数不同的是,在解析时所有的行都是已知的。由于这种差别使组函数与单行函数有在要求和行为上有微小的差异.

    1、组(多行)函数

    与单行函数相比,oracle提供了丰富的基于组的,多行的函数。这些函数可以在select或select的having子句中使用,当用于select子串时常常都和GROUP BY一起使用。

    AVG([{DISYINCT|ALL}])

    返回数值的平均值。缺省设置为ALL

    SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal) FROM scott.empAVG(SAL) AVG(ALL SAL)

    AVG(DISTINCT SAL)1877.94118 1877.94118 1916.071413

    COUNT({*|DISTINCT|ALL} )

    返回查询中行的数目,缺省设置是ALL,*表示返回所有的行。

    MAX([{DISTINCT|ALL}])

    返回选择列表项目的最大值,如果x是字符串数据类型,他返回一个VARCHAR2数据类型,如果X是一个DATA数据类型,返回一个日期,如果X是numeric数据类型,返回一个数字。注意distinct和all不起作用,应为最大值与这两种设置是相同的。

    MIN([{DISTINCT|ALL}])

    返回选择列表项目的最小值。

    STDDEV([{DISTINCT|ALL}])

    返回选者的列表项目的标准差,所谓标准差是方差的平方根。

    SUM([{DISTINCT|ALL}])

    返回选择列表项目的数值的总和。

    VARIANCE([{DISTINCT|ALL}])

    返回选择列表项目的统计方差。

    2、用GROUP BY给数据分组

    正如题目暗示的那样组函数就是操作那些已经分好组的数据,我们告诉数据库用GROUP BY怎样给数据分组或者分类,当我们在SELECT语句的SELECT子句中使用组函数时,我们必须把为分组或非常数列放置在GROUP BY子句中,如果没有用group by进行专门处理,那么缺省的分类是将整个结果设为一类。

    select stat,counter(*) zip_count from zip_codes GROUP BY state;

    ST ZIP_COUNT-- ---------AK 360AL 1212AR 1309AZ 768CA 3982

    在这个例子中,我们用state字段分类;如果我们要将结果按照zip_codes排序,可以用ORDER BY语句,ORDER BY子句可以使用列或组函数。

    select stat,counter(*) zip_count from zip_codes GROUP BY state ORDER BY COUNT(*) DESC;

    ST COUNT(*)-- --------NY 4312PA 4297TX 4123CA 3982

    3、用HAVING子句限制分组数据

    现在你已经知道了在查询的SELECT语句和ORDER BY子句中使用主函数,组函数只能用于两个子串中,组函数不能用于WHERE子串中,例如下面的查询是错误的:

    错误SELECT sales_clerk,SUN(sale_amount) FROM gross_sales WHERE sales_dept='OUTSIDE' AND SUM(sale_amount)>10000 GROUP BY sales_clerk

    这个语句中数据库不知道SUM()是什么,当我们需要指示数据库对行分组,然后限制分组后的行的输出时,正确的方法是使用HAVING语句:

    SELECT sales_clerk,SUN(sale_amount) FROM gross_sales

    WHERE sales_dept='OUTSIDE' GROUP BY sales_clerkHAVING SUM(sale_amount)>10000;

    4、嵌套函数

    函数可以嵌套。一个函数的输出可以是另一个函数的输入。操作数有一个可继承的执行过程。但函数的优先权只是基于位置,函数遵循由内到外,由左到右的原则。嵌套技术一般用于象DECODE这样的能被用于逻辑判断语句IF....THEN...ELSE的函数。

    嵌套函数可以包括在组函数中嵌套单行函数,或者组函数嵌套入单行函数或组函数中。比如下面的例子:

    SELECT deptno, GREATEST(COUNT(DISTINCT job),COUNT(DISTINCT mgr) cnt,

    COUNT(DISTINCT job) jobs,COUNT(DISTINCT mgr) mgrsFROM empGROUP BY deptno;

    DEPTNO CNT JOBS MGRS------ --- ---- ----10 4 4 220 4 3 430 3 3 2

  • 相关阅读:
    MySQL_02之增删改查、PHP数据库操作
    MySQL_01之MySQL数据库基础
    git SSH key生成步骤
    Angular路由的定义和使用
    angular ng-href小测试
    AngularJs 内置指令
    一些移动端浏览器的兼容性Bug
    angular之隐藏显示,CSS类和样式
    一个用于展示的网站
    git extensions stash和stash pop
  • 原文地址:https://www.cnblogs.com/soundcode/p/2312793.html
Copyright © 2011-2022 走看看