爱问知识人 爱问教育 医院库

oracle group by rollup,decode,grouping,nvl,nvl2,nullif,grouping_id,group_id,grouping sets,RATIO_TO

首页

oracle group by rollup,decode,grouping,nvl,nvl2,nullif,grouping_id,group_id,grouping sets,RATIO_TO


        

提交回答
好评回答
  • 2023-04-17 18:29:56

    干oracle 047文章12当问题,经验group by 声明。因此邂逅group by rollup,decode,grouping,nvl,nvl2,nullif,RATIO_TO_REPORT等一下。

    1. decode 与if.then,case.when.这类流数据语句功能差点儿相同

    decode(条件,值1,返回值1,值2,返回值2,值n,返回值n,缺省值)

    该函数的含义例如以下:
    IF 条件=值1 THEN
    RETURN(值1)
    ELSIF 条件=值2 THEN
    RETURN(值2)
    .
    ELSIF 条件=值n THEN
    RETURN(值n)
    ELSE
    RETURN(缺省值)
    END IF

    decode(字段或字段的运算,值1。值2,值3)

    这个函数执行的结果是。当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
    当然值1。值2,值3也能够是表达式

    ----比較大小

    select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
    sign()函数依据某个值是0、正数还是负数,分别返回0、1、-1

    ---依据固定值进行排序 order by

    select * from table_subject order by decode(subject_name, ‘语文‘, 1, ‘数学‘, 2, , ‘外语‘,3) ;

    2. group by rollup ,grouping,grouping_id,group_id,grouping set,GROUP BY CUBE聚合函数,还可參考OVER (PARTITION BY),这个是可返回多行的聚合函数,比較深一点,链接:http://blog.csdn.net/fengeh/article/details/24934437

    rollup:为每一个分组返回一个小计,同一时候为全部分组返回总计;
    比如:group by rollup(A,B)

    grouping 接收列作为參数,假设列为空,则grouping返回1,否则返回0。该函数与rollup搭配使用。
    比如:SQL> SELECT DECODE(GROUPING(EMP_ID), 1, ‘全部员工‘, EMP_ID) EMP_ID,

    nvl2(emp_id,DECODE(GROUPING(MONTH), 1, ‘员工年度‘, MONTH),‘全部员工年度‘) ND,
    SUM(AMOUNT) FROM ALL_SALES GROUP BY ROLLUP(EMP_ID, MONTH);

    GROUPING_ID()函数能够接受一列或多列,返回GROUPING位向量的十进制值GROUPING位向量的计算方法是将依照顺序对每一列调用GROUPING函数的结果组合起来,GOURPING位向量计算,功能与grouping差点儿相同,格式为GROUPING_ID(字段A,字段B,字段C.)

    例如以下例所看到的

    gradeid 位向量 GROUPING_ID()返回值

    非空 非空 00 0

    非空 空 01 1

    空 非空 10 2

    空 空 11 3

    GROUP_ID() 唯一标识反复组,功能与grouping差点儿相同,只是此字段是依据是否有反复数据来推断的,反复数据就判为1,不反复则为0.

    grouping sets类似于union all,不去重。用于group by后面,比如:
    group by grouping sets((STOCK_ID), (STOCK_ID, TYPE_CD, DISCOUNT)));

    整合全部可能性,比如:

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ2Vo/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

    3.nvl nvl2 nullif 都是NULL字段的处理方法

    NULL指的是空值或者非法值
    NVL (expr1, expr2)->expr1为NULL。返回expr2;不为NULL,返回expr1。注意两者的类型要一致
    NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
    NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1

    4.RATIO_TO_REPORT解析函数,经经常使用于百分比求数

    ratio_to_report(字段) OVER (PARTITION BY customer_id) ------PARTITION BY等于group by

    傅***

    2023-04-17 18:29:56

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):