在from子句中使用子查询

目录

查询每个部门的编号、名称、位置、部门人数、平均工资

多表查询分组统计

子查询分组统计


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

为了解释这种查询的作用,下面做一个简单的查询

查询每个部门的编号、名称、位置、部门人数、平均工资

这个前面已经讲过了

SQL> select d.deptno,d.dname,d.loc,count(*),avg(sal)2  from emp e,dept d3  where e.deptno(+)=d.deptno4  group by d.deptno,d.dname,d.loc;DEPTNO DNAME                        LOC                          COUNT(*)   AVG(SAL)
---------- ---------------------------- -------------------------- ---------- ----------10 ACCOUNTING                   NEW YORK                            3 2916.6666720 RESEARCH                     DALLAS                              3 2258.3333330 SALES                        CHICAGO                             6 1566.6666740 OPERATIONS                   BOSTON                              1

除了以上的方式之外,也可以利用子查询完成

首先 dept 是一张数据表,但是对于数据的统计查询,也可以将查询的结果定义为一张新的表

SQL> select deptno,count(empno),avg(sal)2  from emp3  group by deptno;DEPTNO COUNT(EMPNO)   AVG(SAL)
---------- ------------ ----------30            6 1566.6666710            3 2916.6666720            3 2258.33333

此时,查询返回的是一个多行多列的数据,那么只要是多行多列,我们就可以把它看成是一个新的临时表,然后可以在 FROM 子句中使用

SQL> select d.deptno,d.dname,d.loc,temp.count,temp.avg2  from dept d,(3  select deptno,count(empno) count,avg(sal) avg4  from emp5  group by deptno) temp6  where d.deptno=temp.deptno(+);DEPTNO DNAME                        LOC                             COUNT        AVG
---------- ---------------------------- -------------------------- ---------- ----------10 ACCOUNTING                   NEW YORK                            3 2916.6666720 RESEARCH                     DALLAS                              3 2258.3333330 SALES                        CHICAGO                             6 1566.6666740 OPERATIONS                   BOSTON

现在有两种方式可以实现同样功能的查询,那么这两种方式有什么区别呢?

为了更好地解释此类问题,现在假设将数据扩大 10 倍,即此时的 emp 表中有 140 条记录,dept 表中有 40 条记录,现在分析这两种方式

多表查询分组统计

数据量为 emp 表的 1400 * dept 表的 400 = 640000 

子查询分组统计

from子句的数据量为 140 行记录,最多会返回 40 行记录。
与 dept 表查询,dept 表的 400 * 最多返回的 400 = 160000。
数据量为分组的 140 行 + 16000 行 = 161400。
多表查询都会存在性能问题,而子查询的主要目的就是为了解决多表查询的性能问题
在子查询的使用中,应注意以下几点。

(1)子查询必须用括号“ () ”扩起来

(2)子查询中不能再包括 order by 子句

(3)如果需要对查询数据进行排序,只能在外查询语句中使用 order by 子句

(4)子查询允许嵌套,但是不能超过 25 层。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496644.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ViewModel 原理

在现代Android应用开发中,ViewModel是架构组件库的一个关键部分,它在提高应用的稳定性和性能方面发挥着重要作用。在这篇文章中,我们将深入探讨ViewModel的工作原理和最佳实践。 ViewModel简介 ViewModel是Android Jetpack架构组件的一部分…

图论(算法竞赛、蓝桥杯)--Dijkstra算法最短路

1、B站视频链接&#xff1a;D02 最短路 Dijkstra 算法_哔哩哔哩_bilibili 题目链接&#xff1a;【模板】单源最短路径&#xff08;弱化版&#xff09; - 洛谷 #include <bits/stdc.h> using namespace std; #define INF 2147483647 int n,m,s,a,b,c; const int N100010…

c++学习记录 vector容器—赋值操作

函数原型&#xff1a; vector& operator(const vector& vec); //重载等号操作符assign(beg,end); //将[beg,end)区间中的数据拷贝赋值给本身assign(n,elem); //将n个el…

DAY12_VUE基本用法详细版

目录 0 HBuilderX酷黑主题修改注释颜色1 VUE1.1 VUE介绍1.2 Vue优点1.3 VUE入门案例1.3.1 导入JS文件1.3.2 VUE入门案例 1.4 VUE基本用法1.4.1 v-cloak属性1.4.2 v-text指令1.4.3 v-html指令1.4.4 v-pre指令1.4.5 v-once指令1.4.6 v-model指令1.4.7 MVVM思想 1.5 事件绑定1.5.1…

使用空闲电脑免费搭建一个私人的网盘

如果你也有一台空闲电脑&#xff0c;可以使用它来搭建一个私人的网盘。 这里使用的是飞梦云网盘&#xff1b; 服务端&#xff1a;下载 服务器文件使用hash校验进行储存&#xff0c;实现重复上传的文件秒传功能。 Fuse4Ui&#xff08;虚拟分区工具&#xff09;&#xff1a;下…

算法沉淀——动态规划之回文串问题(上)(leetcode真题剖析)

算法沉淀——动态规划之回文串问题 01.回文子串02.最长回文子串03.分割回文串 IV04.分割回文串 II05.最长回文子序列06.让字符串成为回文串的最少插入次数 01.回文子串 题目链接&#xff1a;https://leetcode.cn/problems/palindromic-substrings/ 给你一个字符串 s &#xf…

Django定时任务之django_apscheduler使用

Django定时任务之django_apscheduler使用 今天在写一个任务需求时需要用到定时任务来做一部分数据处理与优化&#xff0c;于是在了解完现有方法&#xff0c;结合自己需求决定使用django_apscheduler&#xff0c;记录一下过程&#xff0c;有几篇值得参考的文章放在结尾&#xf…

python|闲谈2048小游戏和数组的旋转及翻转和转置

目录 2048 生成数组 n阶方阵 方阵旋转 顺时针旋转 逆时针旋转 mxn矩阵 矩阵旋转 测试代码 测试结果 翻转和转置 2048 《2048》是一款比较流行​的数字游戏​&#xff0c;最早于2014年3月20日发行。原版2048由Gabriele Cirulli首先在GitHub上发布&#xff0c;后被移…

云计算新宠:探索Apache Doris的云原生策略

文章目录 Apache Doris 特性极简架构高效自运维高并发场景支持MPP 执行引擎明细与聚合模型的统一便捷数据接入 Apache Doris 极速 1.0 时代极速列式内存布局向量化的计算框架Cache 亲和度虚函数调用SIMD 指令集 稳定多源 关于 Apache Doris 开源社区基于云原生向量数据库Milvus…

搜维尔科技:CATIA为建筑、基础设施和城市规划提供虚拟孪生力量

超越传统项目交付方法限制的协作 复杂建筑和基础设施项目开发的设计和工程流程需要多个利益相关者和所有项目阶段的密切合作。此外&#xff0c;日益复杂的施工项目要求所有团队都依赖 CATIA 和3D EXPERIENCE 虚拟孪生技术作为“通用语言”&#xff0c;以促进协作并减少阶段之间…

【OneAPI】节假日查询API

OneAPI新接口发布&#xff1a;节假日查询API 可查询指定月份、年份法定节假日及调休情况。 API地址&#xff1a;https://oneapi.coderbox.cn/openapi/public/holiday 请求参数 URL参数 参数名类型必须含义说明datestring否要查询的日期可按年或月查询&#xff0c;支持前缀…

如何获取Cookie??

在学习Servlet的时候&#xff0c;我们便学习过如何获取Cookie&#xff0c;我们来回顾以下吧&#xff01; RestController RequestMapping("/param") public class ParamController {//如何获取CookieRequestMapping("/getCookie")public String getCookie…