--count时尽量count(列名),count(*)也可以。

--count,max,min,sum,avg,median(中位数)

select count(empno),count(distinct job),max(hiredate),min(hiredate),sum(sal),round(avg(sal),2)
from emp;

--median:中位数(中间值),一组按大小顺序排列的数据,处于中间位置的数。
--行数为奇数时取中间行的数值(19行/2取9行的值),偶数时取中间2行数值的平均值(若18行则中位数的值为(9行+10行)除以2)。
--如sal共15行,第8行即中位数(中间值)
select median(sal) from emp;

--使用group by统计每个部门的人数
select deptno,count(deptno)
from emp
where deptno is not null
group by deptno;

--group by 以职位分组,查询出每个职位的最低和最高工资
select job,min(sal),max(sal)
from emp
group by job;

--数据统计时,语句中没有group by时,select的选项只能出现统计函数(count(),sum(),max(),min(),avg());

--数据统计时,语句中有group by时,select的选项只能出现统计函数和group by排序使用的分组字段(即列名);

select job,count(ename) from emp group by job;

--数据统计时,使用嵌套函数时,无论与剧中有没有group by ,select选项中只允许出现嵌套行数,其它字段均不允许出现。

--重复的列可以进行分组(GROUP BY),SQL语句执行顺序为FROM,WHRER,GROUP BY,SELECT,ORDER BY
--查询部门名称,部门人数,平均工资,平均工作年限
SELECT D.DNAME 部门名称,count(ename)部门人数,ROUND(AVG(SAL),2)平均工资,ROUND(AVG(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),2)平均工作年限
FROM EMP E FULL OUTER JOIN DEPT D ON( E.DEPTNO=D.DEPTNO)
GROUP BY D.DNAME;

--查询工资各个等级工资的雇员人数,平均工资
SELECT TRIM(S.GRADE),DECODE(S.GRADE,1,'A',2,'B',3,'C',4,'D',5,'E') 工资等级,COUNT(E.ENAME) 雇员人数,ROUND(AVG(E.SAL),2) 平均工资
FROM EMP E,SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL
GROUP BY S.GRADE
ORDER BY 工资等级

--查询领取佣金和不领取佣金的平均工资,平均工作年限,雇员人数
SELECT '不领取佣金',AVG(SAL)平均工资,ROUND(AVG(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),2)平均工资年限,COUNT(EMPNO)雇员人数
FROM EMP E WHERE E.COMM IS NULL
UNION
SELECT '领取佣金',AVG(SAL)平均工资,ROUND(AVG(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12),2)平均工资年限,COUNT(EMPNO)雇员人数
FROM EMP E WHERE E.COMM IS NOT NULL;

--多字段分组

--GROUP BY 字段1,字段2
--查询部门详细信息:部门名称,部门编号,部门位置,平均工资,总工资,雇员人数

SELECT D.DNAME,D.DEPTNO,D.LOC,ROUND(AVG(E.SAL),2),SUM(SAL),COUNT(E.ENAME)
FROM DEPT D,EMP E
WHERE D.DEPTNO=E.DEPTNO(+)
GROUP BY D.DNAME,D.DEPTNO,D.LOC;

--HAVING 必须和GROUP BY一起使用
--查询所有平均工资大于2000的职位信息,平均工资,雇员人数
SELECT E.JOB,ROUND(AVG(SAL),2),COUNT(E.ENAME)
FROM EMP E
GROUP BY E.JOB
HAVING AVG(SAL)>2000;

--查询不包含销售的的工作名称,从事同一工作的雇员工资总和,且工资大于5000,并按照从低到高排序

select E.JOB,SUM(E.SAL) A
from emp e
where e.job !='SALESMAN'
GROUP BY E.JOB
HAVING SUM(E.SAL)>5000
ORDER BY A DESC;

08-oracle统计函数(单组分组函数)的更多相关文章

  1. Oracle的“ORA-00937: 不是单组分组函数” 如何解决?

    之前在编写oracle的sql语句时遇到这个问题,这里做个记录 问题描述:ORA-00937: 不是单组分组函数 问题原因:select语句中又在查询某一列的值,其中还有聚合函数 原先本人编写SQL是 ...

  2. Oracle报错:不是单组分组函数

    报错:不是单组分组函数 实例:select sum(HWJZ) ,rq from  JcChargeInfo 原因: 1.如果程序中使用了分组函数,则有两种情况可以使用: 程序中存在group by, ...

  3. Error:ORA-00937: 非单组分组函数错误

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/istend/article/details/34429721 ORA-00937: 非单组分组函数错 ...

  4. ORA-00937:不是单组分组函数_Oracle

    Demo: SELECT USER_ID, USER_NAME, USER_SEX, MAX(USER_AGE), SUM(USER_MONEY) AS USER_MONEY USER_TEL, US ...

  5. Oracle - 查询语句 - 分组函数

    /* 分组函数 不能再select子句中出现普通的列,除非这个列在group by中给出 所有的空值都会被分为一组 分组过滤 SELECT FROM WHERE GROUPBY HAVING ORDE ...

  6. Oracle系列六 分组函数

    分组函数作用于一组数据,并对一组数据返回一个值. 组函数类型 AVG COUNT MAX MIN STDDEV SUM 组函数语法 SELECT [column,] group_function(co ...

  7. 逆袭之旅DAY14.东软实训.Oracle.多表连接、分组函数、子查询

    2018-07-10 08:29:55 思考应用场景 异常数据的测试 6.显示能挣得奖金的雇员的姓名.工资.奖金,并以工资和奖金降序排列.select ename,sal,commfrom empWH ...

  8. oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数

        花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...

  9. oracle 分组函数执行分析

    先上例了: select job as "JOB1", avg(sal) as "avg sal" from scott.emp group by " ...

随机推荐

  1. HttpAnalyzerStdV7使用教程

    相关链接:HttpAnalyzerStdV7安装教程 1.1.使用HttpAnalyzerStdV7监控服务器返回消息 1.运行前关闭要监控的浏览器. 2.运行软件: 3.点击"Start& ...

  2. CKEditor4.x整合教程-Xproer.WordPaster

    版权所有 2009-2017 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webplug/wordpa ...

  3. 自己上传的ICON

    http://images0.cnblogs.com/blog2015/753930/201508/281150305315355.png http://images0.cnblogs.com/blo ...

  4. SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本)

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...

  5. [LeetCode 题解]: Validate Binary Search Tree

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...

  6. jquery-tmpl 插件

    做项目时页面上有处功能是:在页面有处列表.有添加,我添加修改或删除后要刷新这个列表,首先想到的是局部刷新,但我们一般说的局部刷新就是利于ajax去后台调用数据并显示,而这里是一整个列表就比较麻烦了,刷 ...

  7. 【Newtonsoft.Json.dll】操作简单JSON数据

    { //json数据 string json = "{\"name\":\"张三\",\"sex\":\"男\" ...

  8. documeant 学习总结(二)

    (一)移除节点及属性     /**移除节点和属性的操作     * @throws DocumentException     */    public void RemoveOperator()  ...

  9. linux命令之进程管理命令

    1.ps:查看进程 该命令用于列出命令执行时刻的进程快照,如果想要动态的显示进程信息,可以使用top命令. 参数 说明 a(常用) 显示与终端相关的所有进程,包含每个进程的完整路径 x(常用) 显示与 ...

  10. c++实验3 链式存储线性表

    1.线性表链式存储结构及基本操作算法实现 (1)单链表存储结构类的定义: #include <iostream> using namespace std; template <cla ...