【SQL学习进阶】从入门到高级应用(七)

文章目录
- ✨数据处理函数
- ✨if函数
- ✨cast函数
- ✨加密函数
- ✨分组函数
- ✨max
- ✨min
- ✨avg
- ✨sum
- ✨count
- ✨分组函数组合使用
- ✨分组函数注意事项
- ✨分组查询
- ✨group by
- ✨having
- ✨组内排序
- ✨总结单表的DQL语句
🌈你好呀!我是 山顶风景独好
💕欢迎来到我的博客,很高兴能够在这里和您见面!
💕希望您在这里可以感受到一份轻松愉快的氛围!
💕这里不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!
🏠大家订阅本专栏!本专栏旨在为SQL初学者提供一条逐步迈向高级应用的学习之路,带您从零开始,一步一步练习,逐步掌握SQL的精髓,实现技能的提升与飞跃!😊
✨数据处理函数
✨if函数
如果条件为TRUE则返回“YES”,如果条件为FALSE则返回“NO”:
SELECT IF(500<1000, "YES", "NO");
例如:如果工资高于3000,则输出1,反之则输出0

再例如:如果名字是SMITH的,工资上调10%,其他员工工资正常显示。

再例如:工作岗位是MANAGER的工资上调10%,是SALESMAN的工资上调20%,其他岗位工资正常。

上面这个需求也可以使用:case… when… then… when… then… else… end来完成:

✨cast函数
cast函数用于将值从一种数据类型转换为表达式中指定的另一种数据类型
语法:cast(值 as 数据类型)
例如:cast(‘2020-10-11’ as date),表示将字符串’2020-10-11’转换成日期date类型。
在使用cast函数时,可用的数据类型包括:
- date:日期类型
- time:时间类型
- datetime:日期时间类型
- signed:有符号的int类型(有符号指的是正数负数)
- char:定长字符串类型
- decimal:浮点型




✨加密函数
md5函数,可以将给定的字符串经过md5算法进行加密处理,字符串经过加密之后会生成一个固定长度32位的字符串,md5加密之后的密文通常是不能解密的:

✨分组函数
分组函数的执行原则:先分组,然后对每一组数据执行分组函数。如果没有分组语句group by的话,整张表的数据自成一组。
分组函数包括五个:
- max:最大值
- min:最小值
- avg:平均值
- sum:求和
- count:计数
✨max
找出员工的最高薪资
select max(sal) from emp;
✨min
找出员工的最低工资
select min(sal) from emp;
✨avg
计算员工的平均薪资
select avg(sal) from emp;
✨sum
计算员工的工资和
select sum(sal) from emp;
计算员工的津贴之和
select sum(comm) from emp;
重点:所有的分组函数都是自动忽略NULL的。
✨count
统计员工人数
select count(ename) from emp;
select count(*) from emp;
select count(1) from emp;
count(*)和count(1)的效果一样,统计该组中总记录行数。
count(ename)统计的是这个ename字段中不为NULL个数总和。
例如:count(comm) 结果是 4,而不是14
select count(comm) from emp;
统计岗位数量
select count(distinct job) from emp;
✨分组函数组合使用
select count(*),max(sal),min(sal),avg(sal),sum(sal) from emp;
✨分组函数注意事项
分组函数不能直接使用在where子句当中
select ename,job from emp where sal > avg(sal); 这个会报错的
原因:分组的行为是在where执行之后才开始的。
✨分组查询
✨group by
按照某个字段分组,或者按照某些字段联合分组。注意:group by的执行是在where之后执行。
语法:
group by 字段
group by 字段1,字段2,字段3…
找出每个岗位的平均薪资
select job, avg(sal) from emp group by job;
找出每个部门最高工资
select deptno,max(sal) from emp group by deptno;
找出每个部门不同岗位的平均薪资
select deptno,job,avg(sal) from emp group by deptno,job;
当select语句中有group by的话,select后面只能跟分组函数或参加分组的字段
select ename,deptno,avg(sal) from emp group by deptno; // 这个SQL执行后会报错。

✨having
having写在group by的后面,当你对分组之后的数据不满意,可以继续通过having对分组之后的数据进行过滤。
where的过滤是在分组前进行过滤。
使用原则:尽量在where中过滤,实在不行,再使用having。越早过滤效率越高。
找出除20部分之外,其它部门的平均薪资。
select deptno,avg(sal) from emp where deptno<>20 group by deptno; // 建议
select deptno,avg(sal) from emp group by deptno having deptno <> 20; // 不建议
查询每个部门平均薪资,找出平均薪资高于2000的。
select deptno,avg(sal) from emp group by deptno having avg(sal) > 2000;
✨组内排序
案例:找出每个工作岗位的工资排名在前两名的。
substring_index函数的使用:

group_concat函数的使用:

学习了这两个函数之后,自己可以尝试写出来吗?
✨总结单表的DQL语句
select …5
from …1
where …2
group by …3
having …4
order by …6
重点掌握一个完整的DQL语句执行顺序。
✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊
🏠 我在CSDN等你哦!我的主页😍

相关文章:
【SQL学习进阶】从入门到高级应用(七)
文章目录 ✨数据处理函数✨if函数✨cast函数✨加密函数 ✨分组函数✨max✨min✨avg✨sum✨count✨分组函数组合使用✨分组函数注意事项 ✨分组查询✨group by✨having✨组内排序 ✨总结单表的DQL语句 🌈你好呀!我是 山顶风景独好 💕欢迎来到我…...
20231911 2023-2024-2 《网络攻防实践》实践十一报告
实践内容 (1)web浏览器渗透攻击 任务:使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。 实验步骤: ①选择使用Metasploit中的MS06-014渗透攻击模块②选择PAYLOAD为任意…...
5G专网驻网失败分析(suci无效)
suci 5G终端第一次驻网时,注册消息Registartion request中携带的5GS mobile identity要携带suci类型的mobile identity。 注册消息协议规范见5G NAS 协议3gpp TS24.501 8.2.6 Registration request。 suci协议规范参见3gpp TS24.501 9.11.3.4 5GS mobile identity …...
【PHP项目实战训练】——laravel框架的实战项目中可以做模板的增删查改功能(1)
👨💻个人主页:开发者-曼亿点 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 曼亿点 原创 👨💻 收录于专栏:…...
go语言使用model Gorm MySQL查询数据 定时十分钟查询一次 查询十分钟前新建的数据
在Go语言中,使用GORM库与MySQL数据库交互并定时查询数据是常见的需求。以下是一个基本的示例,展示了如何设置定时任务,并使用GORM查询十分钟前新建的数据: 首先,你需要安装GORM和MySQL驱动: bash go get -…...
透视AI技术:探索折射技术在去衣应用中的奥秘
引言: 随着人工智能技术的飞速发展,其在图像处理和计算机视觉领域的应用日益广泛。其中,AI去衣技术作为一种颇具争议的应用,引发了广泛的讨论和关注。本文将深入探讨折射技术在AI去衣中的应用及其背后的原理。 一、AI去衣技术简介…...
计算机网络工程师需要掌握的知识点
网络基础 网络协议OSI参考模型TCP/IP 体系结构广域网与接入网技术:HDLC、PPP。xDSL、HFCIEEE802标准、以太网技术。网桥、交换机、无线局域网(WLAN)、VLAN、TRUNK、GVRP、STP、综合布线系统IP地址、子网划分、CIDR、ARP、ICMP、IPV6、TCP、UD…...
Java-Collection家族(List接口)
集合-Collection家族-List接口 List接口 1 特点 有序且可重复(因为List接口中添加了许多针对下标操作的方法) 2 四种实现类的数据类型与特点 a. ArrayList 数据结构:一维数组 特点:存储数据 b. LinkedList 数…...
成绩发布小程序哪个好用?
大家好,今天我要来跟大家分享一个超级实用的小秘密——易查分小程序!作为老师,你是不是还在为发放成绩而头疼?是不是还在为通知家长而烦恼?别急,易查分小程序来帮你啦! 易查分简直是老师们的贴心…...
如何让大模型在智能时代背景下更加先进:一种基于时代特征的探讨
随着人工智能技术的飞速发展,大型模型如深度学习网络和强化学习算法已经在各个领域取得了显著的成果。然而,随着应用场景的不断扩展和复杂化,如何让这些大模型在智能时代背景下更加先进,已经成为了一个亟待解决的问题。本文将从以…...
Mac 分享 WIFI 后,iPhone 连接 WIFI,但无法上网
0x00 分享WIFI 如何分享,可查看这篇: MacOS系统如何创建热点并共享Wi-Fi连接 0x01 iPhone 无法上网 打开设置,点击所连 WIFI 进入 配置 DNS 选择 手动 添加 服务器: 公用的有: 114.114.114.114 、180.76.76.76、1…...
C语言编程:揭秘平均输入三个数的艺术
C语言编程:揭秘平均输入三个数的艺术 在C语言编程的广袤天地中,平均输入三个数似乎是一个简单而基础的任务。然而,这个任务却蕴含着许多编程的精髓和技巧。今天,就让我们一同深入探索这个看似简单的任务,揭示其背后的…...
jvm 触发GC的时机和条件
GC的种类 GC又分为 minor GC 和 Full GC (也称为 Major GC ) minor GC:轻GC Full GC(Major GC):重GC Major GC的速度一般会比Minor GC慢十倍以上 什么时候触发GC 程序调用System.gc时可以触发,也不是立即触发…...
UML用例图
一、用例图是什么 用例图是一种描述系统功能的图形化工具,它展示了系统的参与者(用户、其他系统或设备)与用例(系统提供的服务或功能)之间的交互关系。 二、用例图的作用 1、用例图的主要作用 明确系统需求&#x…...
fluent UI v9版本Dialog右上角x按钮聚焦问题解决
右上角x按钮聚焦效果展示 第一次点击不会聚焦,第二次或多次点击会出现这种情况。如果多个地方公用一个页面里,这个页面包含这个组件,那其它页面刚打开弹框就是聚焦状态,是个样式的问题。 解决: import * as React fr…...
【SAP HANA 33】前端参数多选情况下HANA如何使用IN来匹配?
场面描述: 在操作界面经常会出现某个文本框需要多选的情况,然后后台需要根据多选的值进行匹配搜索。 一般处理的情况是: 1、在Java后端动态生成SQL 2、不改变动态SQL的情况,直接当做一个正常的参数进行传递 本次方案是第二个,直接当做一个正常的字符串参数进行传递即…...
Go 语言中常量和变量的定义、使用
Go 语言,作为一种现代编程语言,以其简洁性和高效性赢得了开发者的青睐。在 Go 语言中,常量与变量作为存储和操作数据的基本元素,扮演着至关重要的角色。通过正确理解和使用常量与变量,开发者可以编写出更加健壮和高效的…...
活动预告|6月13日Apache Flink Meetup·香港站
6 月 13 日 | 香港 | 线下 Apache Flink Meetup 的风吹到了香江之畔,Apache Flink 香港 Meetup 来啦!本次活动,我们邀请了来自阿里云的顶尖专家,帮助开发者全面了解 Apache Flink 的流批一体的数据处理能力,流式数据湖…...
算法(七)插入排序
文章目录 插入排序简介代码实现 插入排序简介 插入排序(insertion sort)是从第一个元素开始,该元素就认为已经被排序过了。然后取出下一个元素,从该元素的前一个索引下标开始往前扫描,比该值大的元素往后移动。直到遇到比它小的元…...
抖音太可怕了,我卸载了
这两天刷短视频,上瘾了,太可怕了。 自己最近一直在研究短视频制作,所以下载了抖音,说实话,我之前手机上并没有抖音,一直在用B站。 用了两天抖音,我发现,这玩意比刷B站还容易上瘾啊…...
从纹波和EMI出发:实战分析DC-DC降压电路中PWM与PFM的取舍与优化技巧
从纹波和EMI出发:实战分析DC-DC降压电路中PWM与PFM的取舍与优化技巧 在射频模块或高精度ADC供电设计中,电源的纯净度直接决定系统性能上限。当输出电压纹波超出ADC的LSB范围,或EMI噪声耦合到敏感信号链时,工程师往往需要重新审视D…...
AI应用开发利器:ai-devkit工具包核心功能与工程实践指南
1. 项目概述与核心价值最近在折腾AI应用开发,发现一个挺有意思的项目,叫codeaholicguy/ai-devkit。乍一看名字,你可能会觉得这又是一个“AI开发工具包”,市面上类似的工具已经多如牛毛了。但深入用下来,我发现它不太一…...
ADXL335模拟传感器读数不稳?手把手教你用Arduino进行软件滤波与校准
ADXL335模拟传感器读数不稳?手把手教你用Arduino进行软件滤波与校准 当你把ADXL335加速度计接入Arduino,兴奋地跑起第一个测试程序时,那些跳动的数字可能很快会浇灭你的热情。原始读数像得了疟疾般颤抖,静止时本该稳定的1g重力加速…...
Ruby LLM框架:为Ruby开发者打造的大语言模型应用开发工具包
1. 项目概述:一个为Ruby语言量身打造的LLM应用框架如果你是一名Ruby开发者,最近被各种大语言模型(LLM)的应用搞得心痒痒,但看着满世界的Python库和框架感到无从下手,那么crmne/ruby_llm这个项目可能就是你在…...
AXI Crossbar设计解析:从总线互联原理到SoC集成实战
1. 项目概述:AXI Crossbar,不仅仅是“总线交叉开关”在复杂的数字系统设计,尤其是SoC(片上系统)和FPGA应用中,我们常常面临一个核心问题:多个主设备(Master,如CPU、DMA控…...
Cursor编辑器状态快照插件开发:一键保存与恢复工作区
1. 项目概述:一个专为开发者设计的“后悔药”如果你是一名重度使用 Cursor 编辑器的开发者,那么你一定经历过这样的场景:在沉浸式编码时,为了快速定位或修改,你可能会频繁地使用CtrlClick跳转到函数定义,或…...
像素风格技能图标自动生成:Python+Pillow实现模板化设计
1. 项目概述与核心价值最近在和一些做独立开发者和内容创作者的朋友聊天时,发现一个普遍痛点:大家手头都有不少好想法,但一到具体执行,尤其是需要制作宣传素材时,就卡住了。比如,想给自己的新App做个宣传图…...
【模拟电路】Circuit JS:从零到一,构建你的首个交互式电路实验
1. 初识Circuit JS:你的虚拟电路实验室 第一次接触Circuit JS时,我正为一个简单的LED电路设计发愁。传统仿真软件要么安装复杂,要么收费昂贵,直到发现这个直接在浏览器里运行的免费工具。打开网页的瞬间,就像走进了中学…...
基于vLLM与OpenAI API的LLM生产部署框架实战指南
1. 项目概述:一个面向生产环境的LLM部署框架最近在折腾大语言模型(LLM)的部署,发现了一个挺有意思的项目:run-llama/llama_deploy。这名字乍一看,可能会让人以为它只是用来部署Meta的Llama系列模型的&#…...
dotAI:将AI能力环境化,打造可配置的智能开发工作流
1. 项目概述:当AI成为你的“数字管家”最近在GitHub上看到一个挺有意思的项目,叫udecode/dotai。乍一看这个标题,你可能和我最初的反应一样,有点摸不着头脑。dotai?是“点AI”的意思吗?它和.env文件那种“点…...
