SQL进阶技巧:如何获取状态一致的分组? | 最大、最小值法
目录
0 需求描述
1 数据准备
2 问题分析
方法1:最大、最小值法(技巧)
方法2:常规思路
3 小结
如果觉得本文对你有帮助,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下:
数字化建设通关指南专栏原价99,现在活动价29.9,按照阶梯式增长,直到恢复原价
0 需求描述
星星点灯是一家水果店,它提供了外卖水果拼盘的服务。水果店能够提供四种水果拼盘:水果魔方、海星欧蕾、猫头鹰、草莓雪山,下表反应了某一时刻店内的水果的准备情况。
id platter fruit ready
------ ------------ --------- --------1 水果魔方 猕猴桃 12 水果魔方 香蕉 13 水果魔方 菠萝 14 水果魔方 芒果 15 水果魔方 哈密瓜 16 海星欧蕾 草莓 17 海星欧蕾 橙子 08 猫头鹰 猕猴桃 19 猫头鹰 小橘子 010 猫头鹰 橙子 011 猫头鹰 草莓 112 草莓雪山 草莓 1
上面这些数据存在 platters 表中,platter 是拼盘的名称,fruit 是拼盘要用到的水果,ready 表示水果是否准备好了。当有客户订水果拼盘时,只有拼盘要用到的所有水果都准备好了才能制作。
现在,我们要写 SQL 找出可以立即制作的水果拼盘的名称。
--------------
水果魔方
草莓雪山
1 数据准备
create table platters as(select stack(12,1, '水果魔方', '猕猴桃', 1,2, '水果魔方', '香蕉', 1,3, '水果魔方', '菠萝', 1,4, '水果魔方', '芒果', 1,5, '水果魔方', '哈密瓜', 1,6, '海星欧蕾', '草莓', 1,7, '海星欧蕾', '橙子', 0,8, '猫头鹰', '猕猴桃', 1,9, '猫头鹰', '小橘子', 0,10, '猫头鹰', '橙子', 0,11, '猫头鹰', '草莓', 1,12, '草莓雪山', '草莓', 1) as (id, platter, fruit, ready));
2 问题分析
方法1:最大、最小值法
思路:本题中ready字段中只有0和1值,因此我们可以利用最小值这种极值思维构建辅助条件。当min(ready) =1说明该字段中所有的值都为1.
第一步:求出ready中的最小值,进行辅助判断
select platter, min(ready) flg
from platters
group by platter

为了更好理解此问题我们可以利用窗口函数 min(ready) over (partition by platter) 求出结果并与ready值进行对比分析,这样更直观一些。
select id, platter, fruit, ready, min(ready) over (partition by platter) flg
from platters

步骤2:当flg=1时说明ready中全为1,则符合条件,并获取最终结果。
select platter
from (select platter, min(ready) flgfrom plattersgroup by platter) t
where flg = 1

上述代码可以简化为:
最终SQL如下
select platter
from platters
group by platter
having min(ready) = 1
方法2:常规思路,需要水果种类数等于准备好的状态数时则满足条件
比如水果魔方,它需要的水果有 5 种,当这些水果处于准备好的状态的数量也为 5 时,它就可以被制作了。
SELECT platter
FROM platters
GROUP BY platter
HAVING SUM(ready) = COUNT(*);

上述方式还可以优化为,当某个水果拼盘下没准备好的水果的数量为 0 时,这个拼盘可以被制作。即:
SELECT platter
FROM platters
GROUP BY platter
HAVING SUM(IF(ready = 0, 1, 0)) = 0
3 小结
本文提供了三种不同的SQL查询方法来实现这一目标,其中最大、最小值这种极限思维的分析方法最为优雅,作为一种技巧需要掌握。

如果觉得本文对你有帮助,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下:
数字化建设通关指南
专栏原价99,现在活动价29.9,按照阶梯式增长,直到恢复原价
主要内容:
(1)SQL进阶实战技巧
可以参考如下教程,具体链接如下
SQL很简单,可你却写不好?也许这才是SQL最好的教程
上面链接中的文章及技巧会不定期更新。
(2)数仓建模实战技巧和个人心得
1)新人入职新公司后应如何快速了解业务?
2)以业务视角看宽表化建设?
3) 维度建模 or 关系型建模?
4)业务模型与数据模型有什么区别?业务阶段的模型该如何建设?
5)业务指标体系该如何建设?指标体系该如何维护?指标平台应如何建设?指标体系 该由谁来搭建?
6)如何优雅设计DWS层?DWS层模型好坏该如何评价?
7)指标发生异常,该如何排查?应从哪些方面入手寻找问题点?
8) 数据架构的选择,mpp or hadoop?
9)数仓团队应如何体现自己的业务价值,讲好数据故事?
10)BI与大数据有什么关系?BI与信息化、数字化之间有什么关系?BI与报表之间的关 系?
11)数据部门如何与业务部门沟通,并规划指引业务需求?
文章不限于以上内容,有新的想法也会及时更新到该专栏。
具体专栏链接如下:
数字化建设通关指南_莫叫石榴姐的博客-CSDN博客

相关文章:
SQL进阶技巧:如何获取状态一致的分组? | 最大、最小值法
目录 0 需求描述 1 数据准备 2 问题分析 方法1:最大、最小值法(技巧) 方法2:常规思路 3 小结 如果觉得本文对你有帮助,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下: 数字化建设通…...
windows10使用bat脚本安装前后端环境之msyql5.7安装配置并重置用户密码
首先需要搞清楚msyql在本地是怎么安装配置、然后在根据如下步骤编写bat脚本: 思路 1.下载mysql5.7 zip格式安装包 2.新增data文件夹与my.ini配置文件 3.初始化数据库 4.安装mysql windows服务 5.启动并修改root密码(新增用户初始化授予权限)…...
文件上传、amrkdown编辑器
一、文件上传 这里我以图片为例,进行上传,上传到阿里云oss(对象存在中) 首先,我们先梳理一下,图片上传的流程 1、前端选择文件,提交文件 前端提交文件,我们可以使用ElementUI中的…...
Linux防火墙-4表5链
作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们经过上小章节讲了Linux的部分进阶命令,我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主&#x…...
(最新已验证)stm32 + 新版 onenet +dht11+esp8266/01s + mqtt物联网上报温湿度和控制单片机(保姆级教程)
物联网实践教程:微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制 远程上报和接收数据——汇总 前言 之前在学校获得了一个新玩意:ESP-01sWIFI模块,去搜了一下这个小东西很有玩点,远程控制LED啥的,然后我就想…...
无环SLAM系统集成后端回环检测模块(loop):SC-A-LOAM以及FAST_LIO_SLAM
最近在研究SLAM目标检测相关知识,看到一篇论文,集成了SC-A-LOAM作为后端回环检测模块,在学习了论文相关内容后决定看一下代码知识,随后将其移植,学习过程中发现我找的论文已经集成了回环检测模块,但是我的另…...
速盾:视频开cdn合适还是视频点播合适?
在选择视频服务时,许多企业和个人面临了一个重要的决策,那就是选择是使用开CDN(内容分发网络)还是使用视频点播服务。这两种选择都有各自的优势和适用场景,因此在做出决定之前,我们需要仔细评估自身的需求和…...
Mac电脑安装FFmpeg和卸载FFmpeg
Mac电脑安装FFmpeg 在Mac上安装FFmpeg有几种方法,以下是通过Homebrew安装的最简单方法: 1. 使用Homebrew安装FFmpeg 如果你已经安装了Homebrew,可以通过以下命令来安装FFmpeg: 打开终端 (Terminal)。更新Homebrew:…...
数据结构:栈 及其应用
逻辑结构: 栈(Stack)是一种遵循后进先出(LIFO, Last In First Out)原则的有序集合 (受限的线性表)。这种数据结构只允许在栈顶进行添加(push)或删除(pop&…...
批量发送邮件:性能优化与错误处理深度解析
目录 一、批量发送邮件的基础概述 1.1 批量发送邮件的定义 1.2 邮件发送流程 二、性能优化策略 2.1 发送速率控制 2.2 队列管理 2.3 动态IP池管理 2.4 智能调度 三、错误处理机制 3.1 暂时性发送错误处理 3.2 永久性发送错误处理 3.3 邮件反馈收集与分析 四、案例…...
STM32原理知识查询表
本篇文章主要收录单片机学习过程中的各种知识点原理,如果后面遇到了比较具体的应用,也会有专门的配套实践过程。 2024.09.27单片机的两种看门狗原理解析 持续待更新。。。。。...
从 Kafka 到 WarpStream: 用 MinIO 简化数据流
虽然 Apache Kafka 长期以来一直是流数据的行业标准,但新的创新替代方案正在重塑生态系统。其中之一是 WarpStream,它最近在 Confluent 的所有权下进入了新的篇章。此次收购进一步增强了 WarpStream 提供高性能、云原生数据流的能力,巩固了其…...
【Gitee自动化测试4】本地Git分支的增删查,本地Git分支中文件的增删查,本地文件的暂存/提交,本地分支的推送
一、流程 本地创建分支,设定连接什么云分支本地创建文件,暂存、提交–>本地分支本地分支推送所有修改–>云仓库 二、分支概念 在版本回退里,每次提交,git都把它们串成一条时间线,这条时间线可以理解为是一个分…...
vue-baidu-map的基本使用
前言 公司项目需求引入百度地图,由于给的时间比较短,所以就用了已经封装好了的vue-baidu-map 一、vue-baidu-map是什么? vue-baidu-map是基于vue.js封装的百度地图组件(官方文档) 二、使用步骤 1.下载插件 //我下载的版本 npm install …...
策略路由控制选路
🐣个人主页 可惜已不在 🐤这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 🐥有用的话就留下一个三连吧😼 目录 一、 实验拓扑 二、 实验简述 三、 实验配置 配置路由信息 配置控制选路 四、 实验验证 一、 实验…...
【数据结构和算法实践-排序-快速排序】
数据结构和算法实践-排序-归并排序 题目My Thought代码示例JAVA-8 题目 排序 My Thought 然后再进行递归,递归要注意两个方面: 一、自我调用 二、终止条件:即函数边界 注意点:树、递归* 代码示例 JAVA-8 public class QuickSo…...
测试面试题:请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试
单元测试:完成最小的软件设计单元(模块)的验证工作,目标是确保模块被正确的编码集成测试:通过测试发现与模块接口有关的问题系统测试:是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合…...
回归预测合集|基于灰狼优化21个机器学习和深度学习的数据回归预测Matlab程序 多特征输入单输出
回归预测合集|基于灰狼优化21个机器学习和深度学习的数据回归预测Matlab程序 多特征输入单输出 文章目录 一、清单二、实验结果三、核心代码四、代码获取五、总结 一、清单 基于灰狼优化BP神经网络的数据预测Matlab程序GWO–BP 基于灰狼优化卷积神经网络的数据预测Matlab程序G…...
html/css怎么禁用浏览器自动填写
<input type"text" name"username" autocomplete"off"> <input type"password" name"password" autocomplete"new-password">或者vue: <el-input type"text" v-model"…...
信息安全工程师(22)密码学网络安全应用
前言 密码学在网络安全中的应用极为广泛且深入,它通过多种技术手段确保数据的机密性、完整性和真实性。 一、数据加密 对称加密: 定义:使用相同的密钥进行加密和解密的过程。特点:加密和解密速度快,适用于大数据量的加…...
英雄联盟智能助手Seraphine:免费开源的战绩查询与BP辅助神器
英雄联盟智能助手Seraphine:免费开源的战绩查询与BP辅助神器 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为错过对局接受而懊恼吗?还在BP阶段犹豫不决错失最佳英雄选择吗&#…...
从YOLOv5到Detectron2:COCO数据集在不同CV框架下的加载与预处理实战
从YOLOv5到Detectron2:COCO数据集跨框架加载与预处理实战指南 在计算机视觉领域,COCO数据集已成为目标检测和实例分割任务的事实标准。但对于开发者而言,面对PyTorch生态中YOLOv5、MMDetection和Detectron2等不同框架时,数据加载和…...
基于节点电价的电网对电动汽车接纳能力评估模型研究附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。 🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &…...
SOCD Cleaner终极指南:如何用开源工具解决游戏输入冲突问题
SOCD Cleaner终极指南:如何用开源工具解决游戏输入冲突问题 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否曾在激烈的游戏对战中,因为同时按下相反方向键而输掉关键对决ÿ…...
如何用C++优雅地读写Excel文件?xlnt库的完整实用指南
如何用C优雅地读写Excel文件?xlnt库的完整实用指南 【免费下载链接】xlnt :bar_chart: Cross-platform user-friendly xlsx library for C11 项目地址: https://gitcode.com/gh_mirrors/xl/xlnt 还在为C项目中的Excel文件处理而烦恼吗?ǹ…...
怎么判断铝合金熔炼炉价格才合理?
在选购铝合金熔炼炉时,价格只是一个参考。需要关注市场行情、熔炼炉厂家信誉、设备性能与售后服务等多方面因素。铝熔炼炉若性能更好,初期投入虽高,长期使用能提升产能并降低单位成本。不同类型的冶金熔炼炉各有特点,会影响选型与…...
开源机器人夹爪任务控制台:架构设计与工程实践全解析
1. 项目概述:从“OpenClaw 任务控制”看开源机器人控制台的演进最近在机器人开发社区里,一个名为abhi1693/openclaw-mission-control的项目引起了我的注意。乍一看这个标题,你可能会联想到科幻电影里那些布满屏幕、控制着庞大机械臂的指挥中心…...
本地大模型一站式图形化工具Hermes-Studio部署与调优指南
1. 项目概述与核心价值最近在折腾本地大模型应用开发时,发现了一个挺有意思的项目,叫 Hermes-Studio。乍一看这个名字,你可能以为是某个新的IDE或者设计工具,但实际上,它是一个专门为本地运行的大型语言模型࿰…...
基于Tauri与语义网络的本地优先知识管理工具Engram技术解析
1. 项目概述:从“记忆宫殿”到数字思维引擎最近在折腾一个叫Engram的开源项目,它来自 GitHub 上的 spectra-g。初看这个名字,你可能会联想到“记忆痕迹”或者“思维印记”,没错,它的核心目标就是成为你个人数字思维的“…...
Claude代码生成Token预算管理实战:成本控制与智能优化策略
1. 项目概述与核心价值最近在折腾大模型应用开发,特别是围绕Claude这类顶尖的代码生成模型时,一个绕不开的痛点就是成本控制。模型调用是按Token计费的,而一个复杂的代码生成任务,动辄消耗成千上万个Token,账单不知不觉…...
