SQL分组查询语句问题 请问各位这种SQL分组查询语句该如何写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DATE是什么类型的,按照date是char型给你写的语句,如果是日期型的话to_char转化下就行了select DECODE(GROUPING(date),0,date,'合计'),sum(num) numfrom TGROUP BY ROLLUP(DATE) 1楼正解,使用 decode函数和grouping(),其中grouping中只能有一个参数。decode(字段或字段的运算,值1,值2,值3) 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3。grouping()用于判断是数据库中本来的行,还是统计产生的行,值为0 是原有的行,值为1 则是统计产生的行。 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操作。 select DECODE(GROUPING(date),0,date,'合计'),sum(num) numfrom TGROUP BY ROLLUP(DATE)简单的应用了rollup函数的特性,对于日期进行分组 date类型和字符类型根本不能一起DECODE吧,,,还要to_char一下 date类型和字符类型根本不能一起DECODE吧,,,还要to_char一下前面已写说明,注意看全DATE是什么类型的,按照date是char型给你写的语句,如果是日期型的话to_char转化下就行了 date类型和字符类型根本不能一起DECODE吧,,,还要to_char一下前面已写说明,注意看全DATE是什么类型的,按照date是char型给你写的语句,如果是日期型的话to_char转化下就行了额,,,确实是不仔细,不好意思。我直接复制了代码,没见到过GROUPING函数,学习一下。 select to_char(date,'yyyy-mm-dd'),count(*) from table_name group by to_char(date,'yyyy-mm-dd') 大家都去讨论啥了,版主写的那个SQL RULLUP才是关键好吧,别误导观众了 select decode(grouping(sj),1,'合计',sj) ,sum(sal) from test2 group by rollup(sj); --select * from test2;1 2011/1/1 22 2011/1/1 33 2012/1/1 3 select decode(grouping(date),0,date,'sum'),sum(num) numfrom tongjigroup by rollup(date) imp 不报错 但导不进数据 oracle 拼字符串中使用 nvl2和nvl函数 出错 oracle 存储过程 再一个简单的查询语句问题 关于Oracle中left join简写写法在多条件时如何使用 如何导出 和 导入 表空间? 求一个2个表联合查询性能较高的sql语句。 函数想返回一个表的结果集,怎么写???急急急--在线等 创建数据库链接后该怎么办?? 怎样用语句解锁,怎样操作被锁定的表 oracle 安全 Select count(*) from USER 与Select count(ID) from USER不同之处
select DECODE(GROUPING(date),0,date,'合计'),sum(num) num
from T
GROUP BY ROLLUP(DATE)
1楼正解,使用 decode函数和grouping(),其中grouping中只能有一个参数。
decode(字段或字段的运算,值1,值2,值3)
这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3。
grouping()用于判断是数据库中本来的行,还是统计产生的行,值为0 是原有的行,值为1 则是统计产生的行。
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操作。
from T
GROUP BY ROLLUP(DATE)
简单的应用了rollup函数的特性,对于日期进行分组
前面已写说明,注意看全
DATE是什么类型的,按照date是char型给你写的语句,如果是日期型的话to_char转化下就行了
前面已写说明,注意看全
DATE是什么类型的,按照date是char型给你写的语句,如果是日期型的话to_char转化下就行了
额,,,确实是不仔细,不好意思。
我直接复制了代码,没见到过GROUPING函数,学习一下。
select * from test2;1 2011/1/1 2
2 2011/1/1 3
3 2012/1/1 3
from tongji
group by rollup(date)