SQL> --工资总额
SQL> select sum(sal) from emp;SUM(SAL)
---------- 29025 SQL> --人数
SQL> select count(*) from emp;COUNT(*)
---------- 14 SQL> --平均工资
SQL> select sum(sal)/count(*) 一,avg(sal) 二 from emp;一 二
---------- ----------
2073.21429 2073.21429 SQL> --平均奖金
SQL> select sum(comm)/count(*) 一,sum(comm)/count(comm) 二,avg(comm) 三2 from emp;一 二 三
---------- ---------- ----------
157.142857 550 550 SQL> select count(*),count(comm) from emp;COUNT(*) COUNT(COMM)
---------- ----------- 14 4 SQL> select * from emp;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-12月-80 800 20 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7566 JONES MANAGER 7839 02-4月 -81 2975 20 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 7782 CLARK MANAGER 7839 09-6月 -81 2450 10 7788 SCOTT ANALYST 7566 19-4月 -87 3000 20 7839 KING PRESIDENT 17-11月-81 5000 10 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 7876 ADAMS CLERK 7788 23-5月 -87 1100 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ---------- 7900 JAMES CLERK 7698 03-12月-81 950 30 7902 FORD ANALYST 7566 03-12月-81 3000 20 7934 MILLER CLERK 7782 23-1月 -82 1300 10 已选择 14 行。SQL> --null值 5. 组函数会自动滤空;
SQL> select count(*),count(nvl(comm,0)) from emp;COUNT(*) COUNT(NVL(COMM,0))
---------- ------------------ 14 14 SQL> --null值 5. 组函数会自动滤空;可以嵌套滤空函数来屏蔽他的滤空功能
SQL> host clsSQL> --求部门的平均工资
SQL> select deptno,avg(sal)2 from emp3 group by deptno;DEPTNO AVG(SAL)
---------- ---------- 30 1566.66667 20 2175 10 2916.66667 SQL> --多个列的分组
SQL> select deptno,job,sum(sal)2 from emp3 group by deptno,job4 order by 1;DEPTNO JOB SUM(SAL)
---------- --------- ---------- 10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 20 ANALYST 6000 20 CLERK 1900 20 MANAGER 2975 30 CLERK 950 30 MANAGER 2850 30 SALESMAN 5600 已选择 9 行。SQL> --多个列的分组: 先按照第一个列分组,如果相同,再按照第二列分组,以此类推
SQL> --求平均工资大于2000的部门
SQL> select deptno,avg(sal)2 from emp3 group by deptno4 having avg(sal) > 2000;DEPTNO AVG(SAL)
---------- ---------- 20 2175 10 2916.66667 SQL> --where和having最大的区别:where后面不能使用组函数
SQL> --查询10号部门的平均工资
SQL> select deptno,avg(sal)2 from emp3 group by deptno4 having deptno=10;DEPTNO AVG(SAL)
---------- ---------- 10 2916.66667 SQL> ed
已写入 file afiedt.buf1 select deptno,avg(sal)2 from emp3 where deptno=104* group by deptno
SQL> /DEPTNO AVG(SAL)
---------- ---------- 10 2916.66667 SQL> --SQL优化 3. 尽量使用where
SQL> host clsSQL> /*
SQL> group by 的增强
SQL> select deptno,job,sum(sal) from emp group by deptno,job
SQL> +
SQL> select depton,sum(sal) from emp group by deptno
SQL> +
SQL> select sum(sal) from emp
SQL>
SQL> =
SQL>
SQL> select deptno,job,sum(sal) from emp group by rollup(deptno,job);
SQL>
SQL> group by rollup(a,b)
SQL> =
SQL> group by a,b
SQL> +
SQL> group by a
SQL> +
SQL> group by null
SQL> *、
SQL> */
SQL> host clsSQL> select deptno,job,sum(sal) from emp group by rollup(deptno,job);DEPTNO JOB SUM(SAL)
---------- --------- ---------- 10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 10 8750 20 CLERK 1900 20 ANALYST 6000 20 MANAGER 2975 20 10875 30 CLERK 950 30 MANAGER 2850 30 SALESMAN 5600 DEPTNO JOB SUM(SAL)
---------- --------- ---------- 30 9400 29025 已选择 13 行。SQL> break no deptno skip 2
SP2-0016: 中断说明必须以 ON/BY 或 ACROSS 关键字开始
SP2-0158: 未知的 BREAK 选项 "deptno"
SQL> break on deptno skip 2
SQL> /DEPTNO JOB SUM(SAL)
---------- --------- ---------- 10 CLERK 1300 MANAGER 2450 PRESIDENT 5000 8750 20 CLERK 1900 ANALYST 6000 MANAGER 2975 10875 DEPTNO JOB SUM(SAL)
---------- --------- ---------- 30 CLERK 950 MANAGER 2850 SALESMAN 5600 9400 29025 已选择 13 行。SQL> break on null
SQL> /DEPTNO JOB SUM(SAL)
---------- --------- ---------- 10 CLERK 1300 10 MANAGER 2450 10 PRESIDENT 5000 10 8750 20 CLERK 1900 20 ANALYST 6000 20 MANAGER 2975 20 10875 30 CLERK 950 30 MANAGER 2850 30 SALESMAN 5600 DEPTNO JOB SUM(SAL)
---------- --------- ---------- 30 9400 29025 已选择 13 行。SQL> spool off
详细解决方案
Oracle数据库(四)多行函数
热度:60 发布时间:2023-09-20 22:41:41.0
相关解决方案
- oracle 分页排序,ssi,该怎么处理
- oracle 最近的时间(而不是前一天的时间) 跪求sql语句 。解决方法
- oracle,该怎么解决
- 在 Hibernate3 查询不到 Oracle 11g 里的记录
- oracle 安装时出现 java tm 异常
- android访问其他数据库(如:oracle、MySql等),希望大家给点建议!解决方案
- oracle 安插 LONG VARCHAR 类型数据
- ORACLE 一条SQL的有关问题
- oracle loadjava如何用
- oracle,该如何处理
- C# + SQL server +oracle QQ交流群142703980解决方法
- 怎么跟踪winform应用程序发送到数据库的sql(oracle、mssql)
- , 每次玩ASP都会遇到一些恶心的有关问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运,该怎么解决
- 求解:gridview行值的计算并绑定有关问题(asp.net+oracle)
- Oracle.DataAccess 执行多条sql语句,该如何解决
- VS10连接Oracle的有关问题:"Oracle.DataAccess.Client.OracleConnection"的类型初始值设定项引发错误
- System.Data.OleDb.OleDbException: 未找到 Oracle 客户端和网络组件。
- asp.net oracle 参数化 模糊查询出错,该怎么处理
- Oracle-参数查询有关问题
- oracle,insert 语句插入一条记录后要求,返回主键id値。解决思路
- Oracle 10g下的SQL语句,有点难度.请~[同时向朋友们道歉~]
- 月统计(oracle)解决办法
- 在线紧急等一sql语句(oracle),该怎么处理
- 面试问,为什么jsp+oracle,asp+sql server这样来搭配?该如何处理
- oracle 连接数据库该如何写语句的
- System.Data.OracleClient requires Oracle client software version 8.1.7 or greater
- oracle 防sql注入有关问题!
- 求 Oracle Database Server 'TNS Listener'远路数据投毒漏洞 补丁
- oracle 客户端链接服务端的方式?该如何解决