SQL学习笔记4 分组 子查询 联结

数据库总结(三):分组,联结 ###数学相关的函数 向下取整 floor(num) select floor(3.14); 四舍五入 round(num) select round(23.8); round(num,m) select round(23.879,2); 非四舍五入 truncate(num,m) select truncate(23.879,2); 随机数 rand() 0-1 select ran... 阅读详情

分组

使用GROUP BY对数据进行分组

SELECT vend_id,COUNT(*) AS num_prods
FROM products
GROUP BY vend_id;
  • GROUB BY子句可以包含任意数目的列。因此可以对分组进行嵌套
  • GROUB BY子句列出的每一列都必须是检索列或有效的表达式,不能使用别名
  • 大多数SQL不允许GROUB BY带有长度可变的数据类型(如文本或备注型字段)
  • 除了聚集计算语句外,SELECT语句的每一列都必须在GROUB BY子句给出
  • 如果分组列中有NULL值,则NULL将作为一个分组返回。如果有多行NULL值,它们将分为一组
  • GROUP BY子句必须在WHERE子句之后,ORDER BY之前

过滤分组

SELECT cust_id, COUNT(*) AS orders
FROM Orders
GROUP BY cust_id
HAVING COUNT(*) >2;
  • HAVING和WHERE类似,唯一的区别是WHERE过滤行,HAVING过滤分组
  • WHERE在分组前过滤,HAVING在分组后进行过滤,WHERE排除的行不包括在分组中
  • 在分组后,应使用ORDER BY进行排序

子查询

在WHERE子句中使用子查询

SELECT cust_id
FROM orders
WHERE order_num IN (SELECT order_num
                    FROM orderitems 
                    WHERE prod_id = '123');
  • 子查询内部没有分号,可多层嵌套
  • 作为子查询的SELECT语句只能查询单个列,返回多个列将引起错误

作为计算字段使用子查询

SELECT cust_name,cust_state,(SELECT COUNT(*)
                            FROM orders
                            WHERE orders.cust_id = customers.cust_id) AS orders
FROM customers;
  • 用一个句号分隔表名和列名,避免混淆列名

联结表

在数据查询时联结(join)表是利用SQL的SELECT能执行的最重要的操作
联结是一种机制,用来在一条SELECT语句中关联表,使用特殊的语法,可以联结多个表返回一组输出。

使用WHERE子句联结(内联结)

SELECT vend_name, prod_name, prod_price
FROM vendors,products
WHERE vendors.vend_id = products.vend_id;
  • 若不联结两表,则返回的结果为笛卡尔积,即第一个表中的每一行与第二个表中每一行两两配对

使用INNER JOIN子句联结(内联结)

SELECT vend_name, prod_name, prod_price
FROM vendors INNER JOIN products
ON vendors.vend_id = products.vend_id;
  • 此种联结方式与WHERE联结相同
  • SQL不限制一条SELECT语句中可以联结表的数目,可以使用AND关键词联结多个表
  • 联结表越多,性能消耗越大
  • 可用联结的方式代替子查询

表别名

SELECT vend_name, prod_name, prod_price
FROM vendors AS V,products AS P
WHERE V.vend_id = P.vend_id;
  • ORACLE不支持AS关键字,直接指定即可,如 Customers C
  • 表别名只在查询时使用,不返回客户端

自联结
在一条SELECT语句中不止一次引用相同的表

SELECT cust_id,cust_name,cust_contact
FROM customers AS c1,customers AS c2
WHERE c1.cust_name = c2.cust_name
    AND c2.cust_contact = 'jim jones'; 

外联结
用于包含那些没有关联行的行,例如对每个顾客的订单进行计数,包括那些从未下过订单的顾客

SELECT customers.id, orders.order_num
FROM customers LEFT OUTER JOIN orders
ON customers.cust_id = orders.cust_id;
  • 外联结使用OUTER JOIN关键字而不是WHERE
  • 使用外联结时,需使用LEFT或RIGHT,用于指定包括所有行的表(即使没有关联行的行),LEFT代表OUTER JOIN左边的表,而RIGHT代表OUTER JOIN右边的表
  • 有些数据库软件还支持FULL OUTER JOIN,名为全外联,包含两个表的不关联行

带聚集函数的联结

SELECT customer_id,COUNT(orders.order_num) AS num_ord
FROM customers INNER JOIN orders
ON customers.cust_id = orders.cust_id
GROUP BY customers.cust_id;
SQL之分组统计和子查询专题 李兴华老师ORACLE数据库,分组统计和子查询专题深入详解 立即下载

相关推荐

超详细YOLOv8目标检测全程概述:环境、训练、验证与预测详解

这篇博文提供了一个关于使用YOLOv8进行目标检测的全面指南,包括环境搭建、模型训练、验证和预测的详细步骤,以及如何解释训练过程中生成的各种图表和数据。整篇文章为读者提供了一个关于如何利用YOLOv8进行目标检测的实践指南,从环境搭建到模型部署,再到结果分析,每一部分都给出了详细的步骤和解释。此外,还有对于模型输出的解释,帮助读者更好地理解和使用YOLOv8模型。

CDBmax的博客 10万+

SQL Server分组数据与子查询

SQL Server中分组查询常用于配合聚合函数,实现分类汇总统计的信息。而其分类汇总的本质实际上就是先将信息排列成组,排序后相同类别的信息会聚在一起,然后通过需求进行统计计算。 常用的数据分组: GROUP BY - 根据“By”指定的规则对对查询结果进行分组 HAVING - 通常与GROUP BY子句一起使用,用来指定组或聚合的搜索条件。 GROUPING SETS - 生成多个分组集。 CUBE - 生成包含维列的所有组合的分组集。 ROLLUP - 生成分组集,假设输入列之间存在层

weixin_57775009的博客 682

STM32 SPI驱动TFT LCD实战:时序配置与硬件协同

SPI(串行外设接口)是一种高速、全双工、同步串行通信协议,广泛应用于微控制器与显示模组等外设的数据交互。其核心依赖时钟极性(CPOL)与时钟相位(CPHA)组合定义的四种工作模式,直接影响数据采样可靠性;而片选(NSS)与MOSI/SCLK等信号的硬件映射,则决定了多设备共总线下的通信稳定性。在TFT LCD驱动场景中,SPI凭借低开销、高吞吐优势成为主流选择,尤其适配ST7789、ILI9341等集成显示控制器的模块。本文聚焦STM32L系列MCU通过SPI2驱动1.3寸LCD的完整链路,涵盖Mode

php55的博客 1209

【SQL基础学习-02】

sql基础学习-02

weixin_45393842的博客 1150

Cadence Virtuoso实战:NMOS差分放大器设计与SPICE仿真全解析

本文详细解析了使用Cadence Virtuoso设计NMOS差分放大器并进行SPICE仿真的全流程。从基础设计要点、原理图绘制到工作点分析与性能调优,提供了实用的设计技巧和常见问题解决方案,帮助工程师高效完成模拟集成电路设计。重点介绍了差分放大器的关键参数设置、饱和区优化及版图设计注意事项,适用于ADC、DAC等高性能电路开发。

weixin_28340315的博客 611

从三极管到MOS管:单片机I/O口驱动电路设计实战解析

本文深入解析了从三极管到MOS管的单片机I/O口驱动电路设计实战经验。通过对比三极管与MOS管的本质区别,结合实际案例详细讲解了驱动电路的设计要点、优化技巧及常见问题解决方案,帮助工程师高效完成各类负载驱动设计。

weixin_29161785的博客 318

分组查询&子查询

sql的分组查询(group by、having)和子查询

日常记录,挨打要立正! 1231

一层一责,一聚合一包:DDD分层架构下的微服务代码模型、三重边界与服务数据协作

领域模型画得再清楚,落不进代码也是空谈。本文以一个可运行的客户中心微服务为线索,先对比整洁架构、六边形架构与DDD分层架构,指出三者共同守护的那条隔离核心业务的红线;再把DDD分层落成四个一级目录、以聚合为单位分包、一个聚合一个仓储的代码模型,拆解实体、聚合根、值对象、领域事件、领域服务与仓储的设计要点;随后厘清逻辑、物理、代码三重边界,并用检查器实测:干净代码零越界,拆出积分聚合时领域代码无需改动;注入九处越界后,必须先重构才能拆分。最后梳理服务调用三场景与PO、DO、DTO、VO的协作。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 177万+

SQL学习笔记(五)分组操作、子查询

子查询可以根据是否完全独立被划分为两种:非关联子查询(完全独立)与关联子查询(引用包含语句中的列)。 非关联子查询 我们把返回单行单列的非关联子查询称为标量子查询,这种子查询可以位于常用运算符(=,<>,<,>,<=,>=)的任意一边。 当子查询返回单行单列的结果时,可以直接被用作等式条件其中的一个表达式。如果多于一行时,可以被用于比较,但不能用于等式判断。一旦多于一行又被用在了等号的一端,便会报错(表达式不能等于表达式集)。 多行单列子查询 当返回的.

Eileen_Prince的博客 652

基于YOLO26深度学习框架的人脸识别门禁系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的人脸识别门禁系统实现方法。系统采用YOLO26目标检测算法,通过CSPDarknet53主干网络、特征金字塔结构和注意力机制实现高效人脸检测。研究内容包括数据预处理、模型训练优化和身份验证等关键技术,使用迁移学习策略和CIoU损失函数提升检测精度。该系统可应用于智能安防场景,具有实时性强、识别准确的特点,为门禁管理提供了智能化解决方案。

一键难忘的博客 766

科技与伦理的平衡点:人类计算的伦理

科技与伦理的平衡点:人类计算的伦理 关键词 科技与伦理 人类计算 隐私问题 道德决策自动化 公平性与偏见 法律与社会责任 摘要 本

AI天才研究院 1162

SQL Server中的分组数据和子查询

1.分组数据 SQL Server Group By语句 Group By 从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集” 划分成若干个“小区域”,然后针 对若干个“小区域”进行数据处理 语法: select st.Sid, st.Sname,AVG(c.score)平均成绩 from sc c join Student st on c.Sid=st.Sid where c.score>=60 group by c.Sid ,st.Sid, st.Snam

xiaosao_的博客 1936

从零开始跑通3DGS教程:(四)修改(缩放、空间变换)colmap生成的sfm结果

通过colmap进行的sfm的普通方式会丢失场景的物理尺度信息,并且并不在符合一般认知的坐标系下,本文将读取colmap生成的点云和相机pose,将其进行空间变换和缩放之后,重新保存,新保存的结果仍然可以被colmap读取以及进行后续的稠密重建以及3dgs等工作

诺有缸的高飞鸟的博客 1424

1.4(SQL学习笔记)分组、子查询、联结、组合查询

一、分组   建表及数据填充语句下载:链接:https://pan.baidu.com/s/1WHYafwqKJEKq1kDwCH_Zlg提取码: 3wy4   1.1初识分组   分组是按照某一列,将该列中相同多个相同的数据作为一组,整体分成若干组。   例如有如下表:      例如将vend_id作为依据分组,则会分成三组。   所有vend_id = DLL01为一组,...

weixin_34306446的博客 202

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

一文搞懂SQL中的各种联结——内联结、自然联结、自联结、交叉联结

一、概述 所谓“ 联结 ”指的是数据表和本身,以及不同数据表之间的“ 联结关系 ”。常见的联结有自连接、自然连接、内连接、外联结、完全连接等等。本文以SQLite数据库作为实例讲解,创建了一个名为product的数据库用来存储产品信息。数据库中有两个表,一个productinfo,用来存储每一种产品的详细信息,另一个是vendors,用来存储提供产品的供应商信息,他们的结构分别如下: prod...

MIss-Y的博客 2万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【测试开发学习历程】MySQL分组查询与子查询 + MySQL表的联结操作

命里有时终须有 ~ ~

一个小菜鸡的成长历程 1657

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SQL学习笔记-分组聚合、子查询、关联操作与窗口函数

sql 牛客网

qq_61788779的博客 2669

order by 子查询_SQL-子查询、联结、组合

SQL必知必会-读书笔记(14-17章)十四、使用子查询注意事项#子查询的嵌套数量没有限制#子查询时,需保证SELECT语句具有与WHERE子句中相同数量的列1.利用子查询进行过滤例子:当前有三个表 orders,orderitems,customersorders:订单号(主键)、订单日期、订单客户ID(关联customers的cust_id)orderitems:订单编号(主键),订单物品号(...

weixin_39882317的博客 692

SQL使用子查询、联结表、创建高级联结

使用子查询 利用子查询进行过滤 SELECT cust_name, cust_contact FROM Customers WHERE cust_id IN (SELECT cust_id FROM Orders WHERE order_num IN (SELECT order_num FROM OrderItems ...

weixin_43496455的博客 347

《MySQL必知必会》学习笔记——使用子查询、联结表、创建高级联结

文章目录第14章 使用子查询1. 子查询2. 使用子查询进行过滤3. 作为计算字段使用子查询第15章 联结表1. 联结1.1 关系表 第14章 使用子查询 1. 子查询 SQL允许创建子查询,即嵌套在其他查询中的查询。 2. 使用子查询进行过滤 现在,假如需要列出订购物品TNT2的所有客户,可以有如下使用子查询: SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE pr

qq_42325416的博客 586

《SQL必知必会》:高级联结 内联结 外联结 全联结

文章目录1. 使用表别名2. 使用不同类型的联结2.1 自联结2.2 自然联结2.3 外联结3. 使用带聚集函数的联结4. 使用联结和联结条件 1. 使用表别名 SQL 除了可以对列名和计算字段使用别名,还允许给表名起别名。这样 做有两个主要理由: 缩短SQL 语句; 允许在一条SELECT 语句中多次使用相同的表。 -- 高级联结 SELECT cust_name, cust_contact FROM Customers AS C, Orders AS O, OrderItems AS O

超级大洋葱的博客 596

MySQL基础(4)——子查询(嵌套查询)、联结表、组合查询

本篇主要整理查询表、联结表的相关内容。

Carol_Wang的博客 1万+

子查询与表联结

文章目录子查询关系型数据库表关系一对一关系与外键一对多关系多对多关系表联结查询 子查询 当需要的信息不在一个表中,如果使用简单的查询语句不得不逐条查询 -- (1) 检索包含物品TNT2的所有订单的编号 select order_num from orderitems where prod_id = 'TNT2'; -- (2) 检索具有前⼀步骤列出的订单编号的所有客户的ID select cust_id from orders where order_num IN (20005,20007); -- (

Aeroblaze的博客 1398

MySQL基础——子查询、联结表及高级联结

子查询 查询(query) 任何SQL语句都是查询,但此术语一般指SELECT语句。 利用子查询进行过滤 # 查询订购了TNT2的所有客户的客户信息 mysql> SELECT cust_name, cust_contact -> FROM customers -> WHERE cust_id IN (SELECT cust_id # 查询订单号中的客户ID ...

话说一半的王KK 321

SQL:子查询&&组合查询&&联结查询

地球唯一的guid,绝对不会冲突 可以在应用层生成,提高数据库吞吐能力 是string类型,写代码的时候方便很多

OceanStar的博客 1335

java8 多个字段分组_MySQL学习总结(五)——分组数据,使用子查询,联结表以及创建高级联结...

一.分组数据1. 数据分组分组允许把数据分为多个逻辑组,以便能对每个组进行聚集计算。如需要返回每个供应商提供的产品数目,或者返回只提供单项产品的供应商所提供的产品,或者返回提供10个以上产品的供应商。2. 创建分组分组是在select 语句的group by 子句中建立。Select vend_id, count(*) as num_prodsFrom productsGroup by vend_...

weixin_39935257的博客 240
上一篇: SQL学习笔记3 通配符 计算字段 函数 汇总
下一篇: SQL学习笔记5 组合查询 插入/更新/删除数据 创建和操纵表
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值