请问各位这种SQL分组查询语句该如何写?

解决方案 »

  1.   

    DATE是什么类型的,按照date是char型给你写的语句,如果是日期型的话to_char转化下就行了
    select DECODE(GROUPING(date),0,date,'合计'),sum(num) num
    from T
    GROUP BY ROLLUP(DATE)
      

  2.   


    1楼正解,使用 decode函数和grouping(),其中grouping中只能有一个参数。
    decode(字段或字段的运算,值1,值2,值3)
      这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3。
    grouping()用于判断是数据库中本来的行,还是统计产生的行,值为0 是原有的行,值为1 则是统计产生的行。
      

  3.   

    rollup配合goup by使用,照小组进行分组,同时求总计。可以提供信息汇总功能(类似于"小计"),ROLLUP在数据统计和报表生成过程中带来极大的便利。
    GROUPING(字段)返回不同的值意味着不同的列,如果为“1”表示GROUPING函数对应的列(例如JOB字段)是由于ROLLUP函数所产生的空值对应的信息,即对此列进行汇总计算后的结果。  如果为“0”表示此行对应的这列参未与ROLLUP函数分组汇总活动。
    再说说rollup和cube吧。如果是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作。 
      

  4.   

    select DECODE(GROUPING(date),0,date,'合计'),sum(num) num
    from T
    GROUP BY ROLLUP(DATE)
    简单的应用了rollup函数的特性,对于日期进行分组
      

  5.   

    date类型和字符类型根本不能一起DECODE吧,,,还要to_char一下
      

  6.   

    date类型和字符类型根本不能一起DECODE吧,,,还要to_char一下
    前面已写说明,注意看全
    DATE是什么类型的,按照date是char型给你写的语句,如果是日期型的话to_char转化下就行了
      

  7.   

    date类型和字符类型根本不能一起DECODE吧,,,还要to_char一下
    前面已写说明,注意看全
    DATE是什么类型的,按照date是char型给你写的语句,如果是日期型的话to_char转化下就行了
    额,,,确实是不仔细,不好意思。
    我直接复制了代码,没见到过GROUPING函数,学习一下。
      

  8.   

    select  to_char(date,'yyyy-mm-dd'),count(*) from table_name group by  to_char(date,'yyyy-mm-dd')
      

  9.   

    大家都去讨论啥了,版主写的那个SQL RULLUP才是关键好吧,别误导观众了
      

  10.   

    select decode(grouping(sj),1,'合计',sj) ,sum(sal) from test2 group by rollup(sj); --
    select * from test2;1 2011/1/1   2
    2 2011/1/1        3
    3 2012/1/1 3
      

  11.   

    select decode(grouping(date),0,date,'sum'),sum(num) num
    from tongji
    group by rollup(date)