oracle中group关键字详解

原创 2004年08月27日 01:21:00

GROUP子句:(包括:ROLLUP,CUBE,GROUP BY GROUPING SET)

ROLLUP
--说明:每组增加一汇总行,将每组数据分组统计(常用AVG、SUM函数)

--实例:
SELECT DEPTNO,DECODE(JOB),SUM(SAL) FROM EMP
GROUP BY ROLLUP(DEPTNO,JOB);
--结果:


CUBE

--实例:
SELECT DECODE(GROUPING(department_name), 1, 'All Departments',
department_name) AS department_name,
DECODE(GROUPING(job_id), 1, 'All Jobs', job_id) AS job_id,
COUNT(*) "Total Empl", AVG(salary) * 12 "Average Sal"
FROM employees e, departments d
WHERE d.department_id = e.department_id
GROUP BY CUBE (department_name, job_id);

--结果:
DEPARTMENT_NAME  JOB_ID   Total Empl  Average Sal
------------------------------   ----------  ---------------------
Accounting   AC_ACCOUNT  1   99600
Accounting   AC_MGR   1  144000
Accounting   All Jobs  2   121800
Administration   AD_ASST  1   52800
.
.
.
All Departments  ST_MAN   5   87360
All Departments  All Jobs  107   77798.1308

GROUP BY GROUPING SET...

--说明:多条件汇总语句

--实例:
SELECT channel_desc, calendar_month_desc, co.country_id,
TO_CHAR(sum(amount_sold) , ’9,999,999,999’) SALES$
FROM sales, customers, times, channels, countries co
WHERE sales.time_id=times.time_id
AND sales.cust_id=customers.cust_id
AND sales.channel_id= channels.channel_id
AND customers.country_id = co.country_id
AND channels.channel_desc IN (’Direct Sales’, ’Internet’)
AND times.calendar_month_desc IN (’2000-09’, ’2000-10’)
AND co.country_id IN (’UK’, ’US’)
GROUP BY GROUPING SETS(
(channel_desc, calendar_month_desc, co.country_id),
(channel_desc, co.country_id),
( calendar_month_desc, co.country_id) );

--结果:
CHANNEL_DESC  CALENDAR  CO  SALES$
-------------------- -------- -- --------------
Direct Sales  2000-09  UK  1,378,126
Direct Sales 2000-10  UK 1,388,051
Direct Sales  2000-09  US  2,835,557
Direct Sales  2000-10  US  2,908,706
Internet  2000-09  UK  911,739
Internet 2000-10  UK  876,571
Internet  2000-09  US  1,732,240
Internet  2000-10  US  1,893,753
Direct Sales    UK  2,766,177
Direct Sales    US  5,744,263
Internet    UK  1,788,310
Internet    US  3,625,993
  2000-09  UK  2,289,865
  2000-09  US  4,567,797
  2000-10  UK  2,264,622
  2000-10  US  4,802,459
--注:1-8行,9-12行,13-16行分别是对应着三个汇总条件。

Oracle、MySql、SQLServer 数据库中分页查询中的关键字总结

(一)、 mysql的分页查询
  • langjian2012
  • langjian2012
  • 2014年10月17日 22:13
  • 6620

Oracle高级查询之GROUP BY

现在客户的需求是统计部门中每种工作的工资总额,最后还需要统计所有人的工资总数,相信这样的需求对大家来说还是比较简单的,很快就能写出SQL语句,如下:...
  • HUXU981598436
  • HUXU981598436
  • 2014年07月25日 23:29
  • 1205

oracle中的having ,group by ,where之间联系与区别

having子句与where有相似之处但也有区别,都是设定条件的语句。 在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执...
  • gao454917848
  • gao454917848
  • 2014年06月21日 08:36
  • 1696

Oracle pl/sql中的group by子句不能使用别名,应该这样写。

下面的语句执行的话会报错:ORA-00904: "CALLT": 标示符无效 select case when ta.call_time = 0 then 0 when ta.call_tim...
  • JCrazyUltimate
  • JCrazyUltimate
  • 2015年07月06日 19:58
  • 4004

层级查询高级用法, 执行计划hash group by--工作备忘2016/02/02

1、
  • richieruan
  • richieruan
  • 2016年02月04日 17:36
  • 963

设置属性时,注意Oracle中的关键字...

今天练习Hibernate集合表映射关系时,
  • guduxiaomo123
  • guduxiaomo123
  • 2014年04月18日 00:09
  • 808

关于group by 两个或以上条件的分析

首先group by 的简单说明:    group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使用group by的两个要素:    (1) 出现在selec...
  • my543843165
  • my543843165
  • 2016年09月28日 11:02
  • 1364

Oracle 关键字(保留字) 大全

Oracle 关键字(保留字) 大全 其实这个东西可以在oracle 上输入一个sql语句就可以得到: select * from v$reserved_words order by keyw...
  • kangbin825
  • kangbin825
  • 2017年05月19日 20:45
  • 788

Oracle 关键字(保留字) 大全

Oracle 关键字(保留字) 大全 其实这个东西可以在oracle 上输入一个sql语句就可以得到: select * from v$reserved_words order by keywor...
  • pingyan158
  • pingyan158
  • 2013年01月31日 14:00
  • 24891

当oracle clob类型不能和group by并用,但是需要去除多列重复

当oracle clob类型不能和group by并用,但是需要去除多列重复,请不要急! 直接看SQL: SELECT T.MEMBER, T.HTEST, ...
  • shipeng22022
  • shipeng22022
  • 2015年03月03日 15:40
  • 4369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle中group关键字详解
举报原因:
原因补充:

(最多只允许输入30个字)