MySQL——sum/count里加条件判断、avg求满足条件记录数占比

MySQL高级技巧:用SUM/COUNT除法优雅处理一对多JOIN的重复值 本文深入探讨了MySQL中处理一对多JOIN重复值的高级技巧,通过SUM/COUNT除法方法优雅解决传统DISTINCT或GROUP BY的性能和灵活性局限。文章详细解析了该方法的数学原理、实际应用案例及性能优化策略,特别适合在复杂查询中保持数据准确性的同时提升效率。 阅读详情

leetcode题目:1934. 确认率

在刷leetcode的MySQL题中,从题目的题解知道了count和avg聚合函数的另外用法,在此记录。

count() 里加条件判断
count函数用于统计在符合搜索条件的记录中,指定的表达式expr不为NULL的行数有多少(只要不为NULL都会进行统计)。这里需要特别注意的是,expr不仅仅可以是列名,其他任意表达式都是可以的。

还看到一篇文章说,在MySQL里,count(*) 会把*变为0,即count(0),而0不等于NULL,所以相当于记录表中的总记录数。

刚开始一直弄不明白题解的答案,经过不断尝试后,知道了count的实际运行效果,如下

count(age > 10)  
    -> 不管条件成不成立,都会用age的实际值去计数,只要age不为null都会累计
count(age > 10 or null) 
    -> 符合条件,用age的实际值去计数,只要age不为null都会累计
    -> 不符合条件,则取or后跟的值,这里为null,即count(null),count对null不计数
count(1) / count(null) 
    -> 出现除以0的非法情况,结果会返回null
-- 统计年龄大于19岁的用户人数
-- 以下三种写法等价

select count(age <  19 or null) from user 
select count(if(age <  19, 1, null)) from user 
select count(case when age <  19 then 1 end) from user 

avg() 求符合条件的记录数占比
AVG除了可以计算某字段的均值外,还可以计算符合条件的记录数占比,AVG(判断条件) = 满足“判断条件”为True的记录数 / 总记录数,即每个user_id分组中满足“action = 'confirmed'”的行数占该组总行数的比例

sum()函数里加条件判断
# Write your MySQL query statement below
 

select a.user_id,
round(sum(if (b.action='confirmed',1.00,0.00)) / count(a.user_id), 2) as confirmation_rate 
from Signups a left join Confirmations b on a.user_id = b. user_id
group by a.user_id

参考:

必看!大家困惑的AVG写法的解释!简单易懂!

【确认率】使用count()函数并添加筛选条件

sum+iif 题解

Mysql count 带条件计数

MySQL Count函数使用教程
 

MySQL基础(9)- 聚合函数 一、常见聚合函数 1.AVG / SUM 2.MAX / MIN 3.COUNT 二、GROUP BY 的使用 1.查询各个部门的平均工资,最高工资 2.查询各个job_id的平均工资 3.查询各个department_id,job_id的平均工资 4.查询各个部门的平均工资,按照平均工资升序排列 三、HAVING的使用 1.查询各个部门中最高工资比10000高的部门信息 2.查询部门id为10,20,30,40这4个部门中最高工资比10000高的部门信息 四、结论 1.小结 阅读详情

相关推荐

【MySQL】17-超详细的MySQL聚合函数总结

超详细的MySQL聚合函数总结,以及SELECT语句的语句结构和执行顺序的讲解。

Sihang_Xie的博客 5529

精品:sum和count的if条件判断

小结: sum函数中使用if判断条件格式为:sum(if(条件,列值,0)) 注解:sum是求和函数,条件为真时,执行列值(字段名)求和也就是累加,条件为假时为0求和(当然还是0) 1.单条件判断格式,sum(if(条件字段名=值,需要计算sum的字段名,0)) 2.多条件判断格式,sum(if(条件字段名>值 AND 条件字段名>值 AND 条件字段名=值,1,0)) ...

yuyeqianhen的博客 3097

Ubuntu终端AI编程助手配置:Claude Code接入DeepSeek模型全攻略

在软件开发领域,AI编程助手正成为提升开发效率的重要工具。其核心原理是通过大语言模型理解自然语言指令,生成、解释或调试代码。这类工具的技术价值在于将AI能力无缝集成到开发工作流中,减少上下文切换,实现更流畅的人机协作。常见的应用场景包括代码生成、错误调试、代码重构和技术问答等。本文聚焦于在Ubuntu系统中,将流行的终端AI助手Claude Code的后端模型从原版Claude替换为DeepSeek。通过配置环境变量实现API端点和模型的映射,这一过程涉及Node.js环境管理、npm包安装和关键环境变量设

weixin_42527654的博客 376

Mysql统计函数中加判断语句

之前用的sql的增删改查,但是没有用过函数加判断语句,今天遇到了,在此记录一下,也给没有用过的小伙伴做个参考。 这个里有个部门成绩统计表:emp_sc. 为了方便阅读,统计后的表格要求是这样的: 这里我们可以使用count函数加上if判断。 select *,if(score>=60,‘pass’,‘fail’) as mark from emp_sc; 备注:这里if的条件为true就执行第二个参数,否则就执行第三个参数。 2.有个比赛统计表:game 要求按如下要求进行统计: .

飘荡的云云 1367

AD9361 官方例程详解(一)

文章目录前言一、pandas是什么?二、使用步骤总结 前言 一、pandas是什么? 二、使用步骤 总结

weixin_44630490的博客 4万+

别再只接个放大器了!压电传感器测量电路(电压/电荷放大器)的5个实战配置要点

本文深入解析压电传感器测量电路中的5个关键实战配置要点,包括电缆长度选择、输入阻抗匹配、过载保护设计、低频噪声抑制及放大器选型策略。特别针对电压放大器和电荷放大器的应用场景差异提供工程实践建议,帮助工程师有效解决信号失真、噪声干扰等常见问题,提升测量精度和系统可靠性。

weixin_26869081的博客 301

Mysql,Oracle中 sum、count函数使用条件判断

文章目录一、Mysql1. sum1.1. sum条件判断语句1.2. 示例2. count2.1. count条件判断语句2.2. 示例二、Oracle1. sum1.1. sum条件判断语句1.2. 示例2. count2.1. count条件判断语句2.2. 示例 一、Mysql 1. sum 1.1. sum条件判断语句 select SUM( IF(判断条件,合计使用的字段名,默认值) end )别名 from dual 1.2. 示例 --我这里合计field1,前提是field2

weixin_43627706的博客 8778

二次开发vba_CATIA VBA(VBS)二次开发:使用Search批量选择元素

在CATIA二次开发中很多在程序中进行自动交互的方法或函数都需要使用选择集作为参数,将几何元素按照要求批量添加到选择集中也是实现程序自动运行的有效方法。在前面的文章《CATIA使用VBA(VBS)二次开发时用户的交互选择》和《CATIA使用VBA(VBS)二次开发时工程图和草图位置的交互选择函数Indicate2D》中介绍了在CATIA VBA(VBS)二次开发中用户和选择集之间的交互操...

weixin_32497403的博客 1321

mysql的count+if判断(用来计算数量)

select count(*) as number,count(IF( t.isAbandon = '1', 1, NULL)) as a, count(IF( t.isAbandon = '0', 1, NULL)) as b from t_device t

CXchuanxi的博客 2527

瑞萨CS+仿真器高级配置指南:从原理到实战优化RX系列MCU调试

在嵌入式系统开发中,仿真器是进行早期验证和深度调试的核心工具。它通过精确模拟目标微控制器的指令集、内存和外设行为,构建了一个虚拟的硬件沙盒环境。其工作原理在于对CPU核心、时钟系统和外设接口的软件模拟,使开发者能在无物理硬件时进行代码逻辑验证、内存布局规划和时序分析。这项技术的核心价值在于大幅降低开发成本、加速问题定位,并支持复杂场景的复现与测试。在瑞萨RX系列MCU开发中,CS+集成开发环境内置的仿真器功能尤为强大。本文聚焦于**指令解码缓存**和**外设时钟比率**等关键配置的深度解析,阐述如何通过优化

cmff98425的博客 1119

最新Codex接入DeepSeek官方API教程(无需cc-switch)

最新Codex接入DeepSeek官方API教程(无需cc-switch)

猿小白的博客 928

《MySQL——count()逻辑》

count()用法 count()语义:该函数为一个聚合函数,对于返回的结果集一行行地判断,如果count函数地参数不是NULL,累计值就加1,否则不加。最后返回累计值。 所以count(*),count(主键id)和count(1)都表示返回满足条件地结果集地总行数; 而count(字段)则表示返回满足条件地数据行里面,参数“字段”不为NULL的总个数。 count(主键id): InnoDB引擎会遍历整张表,把每一行的id值都取出来,返回给server层。 sever层拿到id后,判断id是不可能为空的

hanhan的博客 1106

爬虫逆向:Hook 技术原理与实战

Hook 技术​(钩子技术)是一种通过拦截和修改程序执行流程的技术手段。它允许开发者在目标程序的特定位置插入自定义代码,以改变程序的默认行为或获取运行时信息。Hook 技术广泛应用于调试、逆向工程、性能分析、安全防护等领域。Hook 技术在爬虫逆向中非常有用,能够有效获取和修改目标程序的数据。通过合理使用 Hook 工具和技术,可以显著提升爬虫的效率和成功率。但使用时需注意法律和道德问题,确保行为合规。

数据知道的博客 1万+

leetcode刷MySQL记录——sum/count里加条件判断、avg求满足条件记录数占比

sum/count里加条件判断、avg求满足条件记录数占比

什么时候才不是菜鸟.... 850

二叉树三种遍历(动态图+代码深入理解)

文章目录一、图示理解(图片是一位前辈所留,在此感谢)1、先序遍历2、中序遍历3、后序遍历4、层序遍历二、深入理解三种遍历让我们来理解一下绕着外围跑一整圈的真正含义是:遍历所有结点时,都先往左孩子走,再往右孩子走。下面做一个实例吧三、代码实现加以理解以下是C语言全部代码实现下面是同样的例子用c++实现,大家可以参考一下 一、图示理解(图片是一位前辈所留,在此感谢) 1、先序遍历 先序遍历可以想象成,...

流楚丶格念的博客 3万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MySQL函数大全:COUNT、AVG、SUM、MAX、MIN应用指南

想要快速掌握MySQL数据统计的秘诀吗?这5个核心聚合函数就是你的答案!MySQL作为最流行的关系型数据库,提供了强大的聚合函数来帮助我们对数据进行统计分析。无论是计算总数、求平均值,还是找出最大值最小值,这些函数都能让数据处理变得简单高效。🚀 ## 为什么需要聚合函数? 在日常数据分析中,我们经常需要对数据进行统计汇总。比如: - 统计网站用户总数 - 计算商品平均价格 - 汇总订单总金额

gitblog_00628的博客 1092

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

MySQL之常见函数应用:COUNT、MAX、MIN、AVG、SUM

在数据库中,聚合函数用于对一组数据进行计算,返回一个单一的值。这些函数可以用于对数值、字符串、日期等数据进行统计、分析和汇总。常见的聚合函数包括COUNTMAXMINAVG和SUM。了解它们的使用场景和应用方式,可以帮助我们更高效地处理数据查询和分析。本文将详细介绍这五个常见的聚合函数的作用、应用场景以及如何在实际查询中使用它们。

2201_75863687的博客 954

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

滚雪球学MySQL[3.2讲]:MySQL聚合函数与分组详解:COUNT、SUM、AVG、MAX、MIN及GROUP BY与HAVING

在上一期的学习中,我们详细探讨了MySQL的多表查询(3.1),包括内连接(INNER JOIN)、外连接(LEFT JOIN、RIGHT JOIN)以及多表联合查询的技巧。通过这些知识,你已经能够在多个表之间进行数据关联和查询,为复杂的数据提取和分析打下了坚实的基础。然而,随着数据量的增长,简单的查询往往无法满足我们的需求。在实际应用中,我们不仅需要从多个表中提取数据,还常常需要对这些数据进行统计分析。为了满足这些需求,MySQL提供了一系列强大的聚合函数,如COUNTSUMAVGMAXMIN。

**My Coding Family** 2099

Mysql 02:集合函数(聚合函数)查询全解——COUNT/SUM/AVG/MAX/MIN 实战指南

5 大核心函数COUNT计数、SUM求和、AVG平均、MAX最大、MIN最小NULL 处理:除COUNT(*)外,所有函数自动忽略 NULL分组配合:聚合函数常与GROUP BY搭配,实现分组统计过滤规则WHERE过滤行,HAVING过滤分组,不可混用适用场景:报表统计、数据汇总、业务分析、面试高频考点。

2501_91542670的博客 999

count、sum、avg、max、min函数MySQL数据库 - 使用聚合函数查询(头歌实践教学平台)

假设场景,老板想知道公司发给员工的薪水的平均值为多少,此时就可使用。假设场景公司老板想知道公司总共给员工开了多少工资,则可以使用。我们需要获取整张表有多少条数据,那么我们就可以使用。部门一共有少人,我们可以思考该怎么查询?为了完成本关任务,你需要掌握:如何使用。为了完成本关任务,你需要掌握:如何使用。为了完成本关任务,你需要掌握:如何使用。为了完成本关任务,你需要掌握:如何使用。为了完成本关任务,你需要掌握:如何使用。函数查询数据表中总数据量, 2.使用。那么,现在同样是这张表,我假若想知道。

weixin_61009782的博客 4635

Redash数据聚合函数:SUM、AVG与COUNT高级应用

在数据驱动决策的时代,企业每天产生海量数据,但如何从中提取关键指标?Redash作为一款开源数据可视化平台(GitHub_Trending/re/redash),通过内置的SQL聚合函数让复杂数据分析变得简单。本文将深入解析SUM、AVG与COUNT三大核心聚合函数的高级应用场景,帮助你从数据中挖掘业务价值。 ## 核心聚合函数基础 Redash支持超过35种数据数据源([README.md]...

gitblog_01083的博客 817

《MySQL 聚合函数:COUNT、SUM、AVG 的计算逻辑与避坑指南》

] 检查NULL值对计算结果的影响[ ] 验证数值字段类型与精度需求[ ] 为GROUP BY字段建立复合索引[ ] 使用EXPLAIN确认执行计划[ ] 重要数据添加完整性约束聚合函数在千万级数据场景下,合理索引可使性能提升10倍以上。实际案例中,优化后的AVG计算在亿级数据表耗时从12.7秒降至1.3秒。掌握这些核心原理和避坑技巧,可有效提升数据统计的准确性和执行效率,为业务决策提供可靠支撑。

2501_93893367的博客 458

MySQL从零开始 10-count,sum,avg,max,min函数的使用

上一节介绍了select语句的构成与使用(select语句以及where,order by, group by子句的使用),但是只单单依靠select的字句们,是不能发挥出select的全部能力的,本节将介绍select与函数的搭配使用。 本节测试用表为student表,创建脚本如下: create table student ( id int not null default 1, na...

Xucc_x的博客 2296

HackerRank-SQL-Challenges-Solutions聚合函数详解:COUNT、SUM、AVG实战技巧

HackerRank-SQL-Challenges-Solutions是一个专注于使用MySQL环境解决所有SQL挑战的项目,提供了丰富的实战案例帮助开发者掌握SQL聚合函数的应用。本文将深入讲解COUNT、SUM、AVG这三个核心聚合函数的实战技巧,助你轻松应对各类SQL数据统计需求。 ## 📊 COUNT函数:精准统计数据数量 COUNT函数是SQL中最常用的聚合函数之一,用于统计查询结

gitblog_01014的博客 357

mysql下聚合函数count、avg、max、min

1.count() count()函数统计数据表中的行数,或根据查询结果统计列中包含的行数 使用方法: (1)count(*) 计算表中总的行数,不管表中某列有值或是空值 (2)count(字段名) 计算指定列下总的行数,计算的时候将忽略空值 mysql> select * from customers; +-------+----------+---------------------+---------+--------+-----------+-------------------+ | c

河静 2282

MySQL基础篇 | 聚合(分组)函数 、分组查询

MySQL基础篇【第三篇】| 聚合(分组)函数 、分组查询

m0_61933976的博客 1万+
上一篇: 数据库-视图(VIEW)详解
下一篇: SQL高级知识,开窗函数OVER
shadow_zed
博客等级 码龄10年 6289粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值