--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. UVa 12342 Tax Calculator (水题,纳税)

    今天在uva看到一个水题,分享一下. 题意:制定纳税的总额,有几个要求,如果第一个180000,不纳,下一个300000,纳10%,再一个400000,纳15%,再一个300000,纳20%,以后的纳 ...

  2. CodeSmith Generator 6.5 自动生成后的源码分析

    1,NetTiers代码结构流程分析: 2,CodeSmithNetTiers使用实践总结 参看流程结构图和实体定义文件关系图,可以看出自动代码生成后,若是手工来调,还是很麻烦的.鉴于此,建议:1,若 ...

  3. sql 的REPLACE

    REPLACE 用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式. 语法 REPLACE ( 'string_expression1' , 'string_expression2 ...

  4. 基于SSH的记账管理系统设计与实现-JavaWeb项目-有源码

    开发工具:Myeclipse/Eclipse + MySQL + Tomcat 项目简介: Java记账管理系统主要用于财务人员可以从账务中判断公司的发展方向.对个人和家庭而言,通过记账可以制定日后的 ...

  5. jQuery制作多表格固定表头、切换表头的特效

    做了好几天的固定表头特效,总算是搞定了.先说明一下基本功能:我们在一个网页上浏览很多份表格数据的时候,肯定会碰到很多分不清表头,也分不清表 格是哪个的情况,这个时候我们就希望能有一种功能,就是我们再下 ...

  6. 【MVC】分布视图带参数

    1.调用 <!--底部菜单--> @Html.Action(, itemTypeId = , itemId = ViewBag.Id }) 2.定义 public class ItemPu ...

  7. CLR via C# 读书笔记-27.计算限制的异步操作(上篇)

    前言 学习这件事情是一个习惯,不能停...另外这篇已经看过两个月过去,但觉得有些事情不总结跟没做没啥区别,遂记下此文 1.CLR线程池基础 2.ThreadPool的简单使用练习 3.执行上下文 4. ...

  8. droup

    Oracle Drop表并未直接删除 drop table xx purge   drop表 执行drop table xx 语句     drop后的表被放在回收站(user_recyclebin) ...

  9. 279. 完全平方数 leetcode JAVA

    题目: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12 输出: 3 解释: ...

  10. 爬虫开发11.scrapy框架之CrawlSpider操作

    提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调parse方法). 方法二:基 ...