oracle 分组查询
常用的函数:
·:统计个数:COUNT(),根据表中的实际数据量返回结果;
·:求和:SUM(),是针对于数字的统计,求和
·:平均值:AVG(),各种数据类型都支持
·:最大值:MAX(),各种数据类型都支持
·:最小值:MIN(),求出最小值
范例:验证各个函数:
select count(*) 人数,AVG(sal)员工平均工资,SUM(sal)每月总支出,
max(sal) 最高工资,min(sal)最低工资
from scott.emp;
范例:统计出公司的平均雇用年限
select avg(months_between(sysdate,hiredate)/12) from scott.emp;
范例:求出最早和最晚的雇佣日期
select max(hiredate)最晚,min(hiredate)最早 from scott.emp;
以上的几个操作函数,在表中没有数据的时候,只有CIUNT()函数会返回结果,其他都是NULL;
范例:统计bonus表
select count(*) 人数,AVG(sal)员工平均工资,SUM(sal)每月总支出,
max(sal) 最高工资,min(sal)最低工资
from bonus;
实际上针对于count()函数有三种使用形式;
·count(*):可以准确的说返回表中的全部记录数;
·count(字段):统计不为null的所有数据量;
·connt(DISTINCT 字段);消除重复之后的结果;
范例:统计查询一
select count(*),count(empno),count(comm) from scott.emp;
统计查询二:
select count (DISTINCT job) from scott.emp;
5-2:分组统计
范例:根据部门编号分组、查询出每个部门的编号、人数、平均工资。
select count(deptno) 编号,count(*),Avg(sal)
from scott.emp
group by deptno;
范例:根据职位分组,统计出每个职位的人数,最低工资与最高工资。
select job,count(*),min(sal),MAX(sal)
from scott.emp
group by job;
5-3:多表查询与分组统计
范例:查询出每个部门的名称、部门人数、平均工资。
确定要使用的数据表
dept表:部门名称
emp表:统计数据
确定已知的关联字段
雇员与部门:scott.emp.deptno=scott.dept.deptno
第一步:换个思路,查询出每个部门的名称,雇员编号(count(empno))、基本工资(AVG(sal))
select d.ename,e.empno,e.sal
from scott.emp e,scott.emp d
where e.deptno=d.deptno;
第二步:
select d.ename,count(e.empno),AVG(e.sal)
from scott.emp e,scott.emp d
where e.deptno=d.deptno
group by d.dname;
第三部:外连接
select d.dname,count(e.empno),AVG(e.sal)
from scott.emp e,scott.emp d
where e.deptno(+)=d.deptno
group by d.ename;
范例:查询每个部门的编号、名称、位置、部门人数、平均工资;
确定要使用的数据表
dept表:编号、名称、位置
emp表:统计信息
确定已知的关联字段
雇员与部门:scott.emp.deptno=scott.dept.deptno
select d.deptno,d.dname,d.loc,e.empno,e.sal
from scott.emp e, scott.dept d
where e.deptno(+)=d.deptno;
第二步:此时发现有三个列(dept表)同事发生着重复,呢么就可以进行多字段分组。
select d.deptno,d.dname,d.loc,count(e.empno),avg(e.sal)
from scott.emp e, scott.dept d
where e.deptno(+)=d.deptno
group by d.deptno,d.dname,d.loc;
oracle 分组查询的更多相关文章
- 五、Oracle 分组查询、视图
一.分组函数1.avg:平均分2.sum:求和3.max:最大值4.min:最小值注意:前面四个必须针对数值字段,且参数只能是一个5.count:求个数 二.分组查询1.语法是 group by 分组 ...
- ORACLE分组查询和统计等
select flow_id,rw from (select t.flow_id ,rownum as rw from apex_030200.wwv_flow_list_templates t) ...
- oracle分组查询实例ORA-00979和ORA-00937错误分析
select J.ZWJGH,J.CZZXBH,J.JZZT,J.CWNY,J.JZPZH sum(J.FSE)<!-- 聚合函数字段没在分组条件中--> from JZPZXX J &l ...
- oracle分组查询
分组函数 在分组函数中,如果有一个查找项分组,其他项必须也分组,比如下面的语句会报错,因为sal分组了,而ename没有分组: 1.显示工资最高的员工: 2.显示所有员工的平均工资: 2.1使用系统函 ...
- oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by
select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...
- .Net程序员学用Oracle系列(21):分组查询(GROUP BY)
1.GROUP BY 标准分组 1.1.GROUP BY 概述 1.2.WHERE 和 HAVING 的区别? 2.GROUP BY 扩展分组 2.1.ROLLUP 分组 2.2.CUBE 分组 2. ...
- Oracle和MySQL分组查询GROUP BY
Oracle和MySQL分组查询GROUP BY 真题1.Oracle和MySQL中的分组(GROUP BY)有什么区别? 答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段 ...
- Oracle总结【SQL细节、多表查询、分组查询、分页】
前言 在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了...印象中就只有基本的SQL语句和相关一些概念....写下本博文的原因就是记载着Or ...
- 【Oracle命令 】使用的sql语句之分组查询(group by)
由于本人并未对oracle数据库进行深入了解,但是工作中又需要知道一些基础的sql,所以记录下操作的sql语句.方便日后查看 1.将序列号作为分组查询的条件,再将查询出来的结果进行筛选. select ...
随机推荐
- 【译】第18节---数据注解-ForeignKey
原文:http://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-fi ...
- mybatis+spring boot, mapper 提示Could not autowire. No beans of … type found
工具及背景: IntelliJ IDEA 2016.1.3 Ultimate.spring boot, maven项目,利用mybatis 注解的方式查询mysql. 业务逻辑关系:controlle ...
- MVC杂记
@{ Layout = “…”} To define layout page Equivalent to asp.NET master-page 要定义相当于ASP.Net母版页的页面布局 @mode ...
- 【BZOJ】3576: [Hnoi2014]江南乐
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3576 很显然,这是一个multi-nim游戏. 注意:1.一个点的SG值就是一个不等于它的 ...
- CentOS下修改Apache默认端口80
打开 /etc/httpd/conf/httpd.conf 文件 修改这个地方 #Listen 12.34.56.78:80 Listen 80 #把80改为你设置的端口,我设置端 ...
- 关于Tortoise git汉化包装了,不管用,仍然是英文菜单的问题记录
今天在装小乌龟(TortoiseGIT)碰到了安装中文语言包不管用的情况,后来在几番折腾之后总算搞定了,但是具体哪一步搞定的,目前原因还不清楚,所以把搞定的过程记录下,留作后用: 1.Tortoise ...
- 插件写法之脚本运行环境,mac和window检测
(function(root, factroy){ /* * 在这里进行对脚本运行环境的检测判断 * 浏览器中 有window对象 * node.js服务器端 有Global对象 * * IE11 ...
- const修饰函数
#include <iostream> using namespace std; class A { public: A(int age); void printAge() const; ...
- Codeforces 101173 C - Convex Contour
思路: 如果所有的图形都是三角形,那么答案是2*n+1 否则轮廓肯定触到了最上面,要使轮廓线最短,那么轮廓肯定是中间一段平的 我们考虑先将轮廓线赋为2*n+2,然后删去左右两边多余的部分 如果最左边或 ...
- Mac 如何安装 chromedriver
1.使用brew 命令 前提是要安装 brew 这里不做介绍 使用命令 brew install chromedriver 如上图出现错误,根据提示可以使用如下命令安装 brew cask inst ...