首先要明白的一点:数据重复的时候分组才有意义。

分组查询语法:

SELECT [DISTINCT] *|分组字段1 [别名] [,分组字段2 [别名] ,…] | 统计函数

FROM 表名称 [别名], [表名称 [别名] ,…]

[WHERE 条件(s)]

[GROUP BY 分组字段1 [,分组字段2 ,…]]

[ORDER BY 排序字段 ASC | DESC [,排序字段 ASC | DESC]];

特别说明的几点(非常重要):

1,GROUP BY 分组字段不能用字段别名;

2,没有分组时

统计函数可以单独用于SELECT之后,但是不能再出现其他字段;

3,单字段分组时

SELECT之后就只能用统计函数和GROUP BY之后的字段;

4,多字段分组时

涉及到的两个问题:

①跨表间的关联字段;-->消除笛卡儿积

②需要解决单字段分组时的局限性(如上第3点),解决方法:一般情况是在FROM后嵌套子查询-->构建临时表。举例如下:

列出各个部门的MANAGER(经理)的最低薪金、姓名、部门名称、部门人数。

1、确定所需要的数据表:

emp表:找到经理的薪金、姓名;

dept表:部门名称;

emp表:统计部门人数;

2、确定已知的关联字段:emp.deptno=dept.deptno;

第一步:找到所有部门的经理

SELECT deptno,MIN(sal)

FROM emp

WHERE job='MANAGER'

GROUP BY deptno;

第二步:找到姓名,但是以上的子查询,不能再出现其他的字段

SELECT e.ename,e.sal

FROM emp e,(

SELECT deptno dno,MIN(sal) sal

FROM emp

WHERE job=’MANAGER’

GROUP BY deptno) temp

WHERE e.deptno=temp.dno AND e.sal=temp.sal AND e.job='MANAGER';

第三步:加入部门的名称信息

SELECT e.ename,e.sal,d.dname

FROM emp e,(

SELECT deptno dno,MIN(sal) sal

FROM emp

WHERE job='MANAGER'

GROUP BY deptno) temp,dept d

WHERE e.deptno=temp.dno AND e.sal=temp.sal AND e.job='MANAGER'

AND e.deptno=d.deptno;

第四步:统计部门人数

SELECT e.ename,e.sal,d.dname,res.count

FROM emp e,(

SELECT deptno dno,MIN(sal) sal

FROM emp

WHERE job=’MANAGER’

GROUP BY deptno) temp,dept d,(

SELECT deptno dno,COUNT(empno) count

FROM emp

GROUP BY deptno) res

WHERE e.deptno=temp.dno AND e.sal=temp.sal AND e.job='MANAGER'

AND e.deptno=d.deptno AND res.dno=d.deptno;



oracle联合分组查询,Oracle分组查询相关推荐

  1. Oracle笔记(六) 多表查询、统计函数及分组查询、子查询

    本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查询一起完成各个复杂查询的操作: 一 ...

  2. oracle两表联查分组,oracle解决多表关联分组查询问题

    做了一个功能需要分组查询,同时查询A表分组查询的ID需要关联B表的数据,本来想两个表关联查询,但是报group by 语法不正确.所以做了以下修改. select count(*), cindexid ...

  3. oracle分组聚合查询,Oracle中分组查询group by用法规则解析

    本篇文章小编给大家分享一下Oracle中分组查询group by用法规则解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Oracle中group by ...

  4. oracle每小时分组查询,Oracle 天内按小时分组查询有关问题

    Oracle 天内按小时分组查询问题 本帖最后由 hao123yao 于 2013-03-08 11:30:56 编辑 表名c_data_01.表结构: uuid   c_id      c_time ...

  5. oracle关联分组查询,oracle中关联查询、分组查询

    高级查询 1.关联查询 作用:可以跨越多表查询 --查询出员工的名字和他所在部门的的名字 //古老的写法 select first_name,name from s_emp,s_dept where ...

  6. oracle数据库怎么分组查询,oracle数据库之分组查询

    本章内容和大家分享的是数据当中的分组查询.分组查询复杂一点的是建立在多张表的查询的基础之上,(我们在上一节课的学习中已经给大家分享了多表查询的使用技巧,大家可以自行访问:多表查询1  多表查询2)而在 ...

  7. 318分组聚合,关联查询(多表连接查询)(连接查询),连接查询oracle写法,集合运算ld

    ----------分组聚合:对表里面的数据进行各个维度/角度的统计 -------------统计:需要用 聚合函数 max(目标字段):求最大值 min(目标字段) :求最小值 avg(目标字段) ...

  8. oracle 分组 排名,Oracle数据库之分组查询及排序

    分组查询:使用 group by 来设置分组,把该列具有相同值的多条记录当成一组记录来处理,然后只会输出一条记录,得到的结果会默认使用升序的方式进行排列. 规则: (1)如果使用了分组函数,或者是 g ...

  9. Oracle之数据操作__分组统计查询

     一. 统计函数        1. COUNT(*),COUNT(字段),COUNT(DISTNCT 字段) SELECT COUNT(*),COUNT(ename),COUNT(comm),COU ...

  10. MySQL基础——数据库和SQL概述\MySQL基本使用\DQL语言学习\条件查询\排序查询\常见函数\分组查询\连接查询\子查询\分页查询\联合查询

    本文详细讲解了MySQL中DQL语言,也就是数据查询语句的使用.全文3w余字,是对学习MySQL知识的整理总结,因为篇幅较长,MySQL基础知识余下部分发表在余下博客中 DML语言学习\插入数据\删除 ...

最新文章

  1. IEEE Spectrum调查:AI 的 6 种最坏情况
  2. 桌面云实验环境的部署配置
  3. android+note2+分辨率,魅蓝Note2的屏幕尺寸是多少?魅蓝Note2的分辨率是多少?
  4. linux搭建directx环境,微軟開始在WSL 2環境中的Linux支援DirectX
  5. 【opencv】——钢管计数(霍夫圆变换 + 阈值 + canny)
  6. 视频人脸检测——Dlib版(六)
  7. 简要概述html5的设计宗旨,HTML5程序设计(第2版) 第一章:HTML5概述.doc
  8. linux vnc的小黑点和鼠标不同步_vnc安装步骤,vnc在Linux中的7个安装步骤
  9. 关于TCP/UDP缓存
  10. IE缓存文件提取器 V2.1 绿色版
  11. 自在服务器虚拟化,新破晓诛仙3单机版16职业商业仿官青罗天界灵境神隐虚拟机一键端GM网单...
  12. COPRA RF 2005 SR1最新版 (冷弯成型,轧辊设计)
  13. OpenCV画椭圆、实心圆、凹多边形、线段、矩形
  14. 濡沫江湖一直显示获取服务器地址,濡沫江湖霜儿剧情任务怎么完成?霜儿专属剧情任务接取以及完成攻略...
  15. 解决macOS无法在线升级更新的问题
  16. 给你一碗孟婆汤,你会选择遗忘什么?
  17. b站网页html,bilibili注册页面html简单分析
  18. 英文WM 5.0、6.0 ROM汉化初级教程
  19. Android端外推送到底有多烦?(转载自一个1000万用户App的CTO的对推送的看法)
  20. 考研数据结构判断题整合

热门文章

  1. 域名备案方法及是否需要备案
  2. 记录第一次面试的体会(字节跳动实习生招聘)
  3. 字节跳动前端实习面经
  4. 高一计算机课期中考试总结反思,高一期中考试总结反思1300字
  5. Excel怎么隔列设定不同的背景颜色
  6. 双极性正弦脉宽调制(双极性SPWM)介绍及MATLAB仿真验证
  7. 分类--ROC 和曲线下面积
  8. Endnote快速上手
  9. Echarts使用之-散点图(各国人均寿命与GDP关系演变)
  10. 年仅 28 岁就宣布从字节跳动退休?