首页/新闻资讯/正文详情

SQL必知必会 10-11

发布时间:2026/11/6 5:18:57 来源:云帆数科 栏目:资讯中心
SQL必知必会 10-11
本文是个人学习笔记学习素材参考《SQL必知必会第5版》仅用于个人学习记录非商用。样例数据、练习思路来自该书。十.分组数据10.1 数据分组目前为止所有计算都是在表的所有数据或匹配特定的WHERE子句的数据上进行的如果想要返回每个供应商提供的产品数目或者返回只提供一项产品的供应商产品或者返回提供10个以上产品的供应商的产品就要用到分组使用分组可以将数据分为多个逻辑组对每个组进行聚集计算。10.2 创建分组使用的是GROUP BY子句SELECT VEND_ID,COUNT(*) AS NUM_PRODSFROM PRODUCTSGROUP BY VEND_ID;GROUP BY的规定可以包含任意数目的列因而可以对分组进行嵌套更细致地进行数据分组如果在GROUP BY子句中嵌套了分组数据将在最后指定的分组上进行汇总GROUP BY字句中列出的每一列都必须是检索列或有效的表达式但不能是聚集函数大多是SQL实现不允许GROUP BY列带有长度可变的数据类型除聚类计算语句外SELECT语句中的每一列都必须在GROUP BY子句中给出如果分组列中包含具有NULL值的行则NULL将作为一个分组返回GROUP BY字句必须出现在WHERE子句之后ORDER BY子句之前10.3 过滤分组HAVING非常类似于WHEREWHERE过滤行HAVING过滤分组SELECT CUST_ID, COUNT(*) AS ORDERSFROM ORDERSGROUP BY CUST_IDHAVINGCOUNT(*) 2;WHERE在数据分组前进行过滤HAVING在数据分组后进行过滤例列出具有两个以上产品且其价格大于等于4的供应商SELECT VEND_ID, COUNT(*) AS NUM_PRODSFROM PRODUCTSWHEREPROD_PRICE 4GROUP BY VEND_IDHAVINGCOUNT(*) 2;10.4 分组和排序ORDER BY与GROUP BYORDER BYGROUP BY对产生的输出排序对行分组但输出可能不是分组的顺序任意列都可以使用只可能使用选择列或表达式列而且必须使用每个选择列表达式不一定需要如果与聚类函数一起使用列或表达式则必须使用一般在使用GROUP BY子句时应该也给出ORDER BY子句千万不要仅依赖GROUP BY排序数据例检索包含三个或更多物品的订单号和订购物品的数目SELECT ORDER_NUM, COUNT(*) AS ITEMSFROM ORDERITEMSGROUP BY ORDER_NUMHAVING COUNT(*) 3;要按订购物品的数目排序输出需要添加ORDER BY子句SELECT ORDER_NUM, COUNT(*) AS ITEMSFROM ORDERITEMSGROUP BY ORDER_NUMHAVING COUNT(*) 3ORDER BYITEMS, ORDER_NUM;10.5 SELECT子句顺序SELECT子句顺序子句说明是否必须使用SELECT要返回的列或表达式是FROM从中检索数据的表仅在从表选择数据时使用WHERE行级过滤否GROUP BY分组说明仅在按组计算聚集时使用HAVING组级过滤否ORDER BY输出排序顺序否十一.使用子查询11.1 子查询查询任何SQL语句都是查询但此术语一般指SELECT语句SQL允许创建子查询即嵌套在其他查询中的查询11.2 利用子查询进行过滤例需要列出订购物品RGAN01的所有用户1检索包含物品RGAN01的所有订单的编号2检索具有前一步骤列出的订单编号的所有顾客ID3检索前一步骤返回的所有顾客ID的顾客信息先做1查询出物品GRAN01的所有订单编号SELECT ORDER_NUMFROM ORDERITEMSWHERE PROD_ID RGAN01;然后做2找出所有顾客IDSELECT CUST_IDFROM ORDERSWHERE ORDER_NUM IN (20007,20008);结合这两个查询SELECT CUST_IDFROM ORDERSWHERE ORDER_NUM IN(SELECT ORDER_NUMFROM ORDERITEMSWHERE PROD_ID RGAN01);在SELECT语句中子查询总是从内向外处理格式化SQL把子查询分解为多行并进行适当的缩进能极大地简化子查询的作用接下来做3SELECT CUST_NAME, CUST_CONTACTFROM CUSTOMERSWHERE CUST_ID IN (1000000004,1000000005);把三个步骤合并起来SELECT CUST_NAME, CUST_CONTACTFROM CUSTOMERSWHERE CUST_ID IN (SELECT CUST_IDFROM ORDERSWHERE ORDER_NUM IN (SELECT ORDER_NUMFROM ORDERITEMSWHERE PROD_ID RGAN01));在实际使用时由于性能的限制不能嵌套太多的子查询注意作为子查询的SELECT语句只能查询单个列查询多个列将返回错误11.3 作为计算字段使用子查询使用子查询的另一方法是创建计算字段例需要显示customers表中每个顾客的订单总数订单与相应的顾客ID储存在orders表中1从customers表中检索顾客列表2对于检索出的每个顾客统计其在orders表中的订单数目如果对顾客1000000001的订单进行计数SELECT COUNT(*) AS ORDERSFROM ORDERSWHERE CUST_ID 1000000001;要对每个顾客执行COUNT(*)应该将它作为一个子查询SELECT CUST_NAME, CUST_STATE,(SELECT COUNT(*)FROM ORDERSWHERE ORDERS.CUST_ID CUSTOMERS.CUST_ID)AS ORDERSFROM CUSTOMERSORDER BY CUST_NAME;

相关推荐

SLAM 与 6DoF:让设备在陌生环境中一边实时建图、一边定位自身六自由度姿态的技术报告
SLAM 与 6DoF:让设备在陌生环境中一边实时建图、一边定位自身六自由度姿态的技术报告

SLAM(Simultaneous Localization and Mapping,同步定位与地图构建)与 6DoF(六自由度)位姿估计是 AR/VR、移动机器人、无人机、自动驾驶等智能系统的核心感知能力。 本报告以 Python 为实践主线,系统梳理 SL… · 2026/11/6 5:17:57

单片机同步降压稳压器输出最低1V,关断时损耗3uA
单片机同步降压稳压器输出最低1V,关断时损耗3uA

140/90m低导通电阻内部MOSFET 宽4V至32V工作输入范围 3A持续输出电流 600kHz开关频率 带hiccup模式的短路保护 内置过流保护 集成内部软启动功能 输出可调范围从0.925V起 低EMI特征 100%占空比最大值 热关断 COT模式 MSL3封装级别空载时的工作电流为200uA,关断时降至… · 2026/11/6 5:17:57

2026年大模型应用爆发?小白程序员必收藏!掌握ADLC评估体系,让智能体落地更轻松
2026年大模型应用爆发?小白程序员必收藏!掌握ADLC评估体系,让智能体落地更轻松

2026年被视为Agentic AI应用爆发年,但Gartner预测超40%项目因成本、价值及风险问题被取消。文章指出,传统软件工程方法不适用于AI智能体,需采用亚马逊云科技提出的ADLC(Agent Development Lifecycle)评估驱动工程范式。… · 2026/11/6 5:17:57

高效查找第K大元素:排序、堆与快速选择算法对比
高效查找第K大元素:排序、堆与快速选择算法对比

1. 问题描述与核心挑战 给定整数数组 nums 和整数 k,我们需要找到数组中第 k 个最大的元素。请注意,这里要求的是排序后的第 k 个最大元素,而不是第 k 个不同的元素。 这个问题看似简单,但隐藏着几个关键挑战: 当数组… · 2026/11/6 15:05:13

企业设备数字化管理:易点易动系统实践指南
企业设备数字化管理:易点易动系统实践指南

1. 设备管理在企业数字化转型中的核心价值 设备管理作为企业资产管理的重要组成部分,正在经历从传统人工记录向数字化、智能化管理的转变。在制造业、医疗、教育等行业,设备资产往往占据企业总资产的60%以上,其管理效率直接影响企业运营成本和… · 2026/11/6 15:05:13

企业元宇宙治理框架:技术实现与合规路径
企业元宇宙治理框架:技术实现与合规路径

1. 企业元宇宙治理框架的核心逻辑 企业元宇宙作为数字化转型的新阶段,其治理框架需要兼顾技术创新与合规要求。从技术架构角度看,企业元宇宙本质上是一个由数字孪生、区块链、人工智能等技术构成的复杂系统。这个系统需要解决三个核心问题:如… · 2026/11/6 14:59:51

基于CDC的MySQL实时数据同步方案实践
基于CDC的MySQL实时数据同步方案实践

1. 项目背景与核心价值 在数据驱动的业务场景中,数据库表间数据同步是个高频需求。我最近在电商订单系统中就遇到了这个问题:订单主表数据变更后,需要实时同步到统计分析表和风控表。传统的手动同步或定时任务方式存在延迟高、易出错的问题&a… · 2026/11/6 14:00:34

JSP农贸交易系统开发与智能撮合算法实践
JSP农贸交易系统开发与智能撮合算法实践

## 1. 项目概述与核心价值农贸产品交易系统是连接农产品生产端与消费端的重要数字化桥梁。这个基于JSP技术的交易平台(项目编号g3608)完整包含了程序源码、数据库设计、部署指南和开发环境配置,是一套开箱即用的农产品B2B解决方案。我在参与某… · 2026/11/6 14:00:34

2025年3D建模工具选型实战指南:按工作流断点匹配生产力
2025年3D建模工具选型实战指南:按工作流断点匹配生产力

1. 这不是选软件,是选你未来三年的“数字手”——为什么2025年建模工具选择比以往任何时候都更关键 2025年做3D建模,你面对的早已不是“用哪个软件画个模型”这么简单的事。它直接决定你能不能接单、能不能按时交付、能不能把想法一秒变现实、甚至决定你… · 2026/11/6 14:00:34

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码