SUMIF

就是 Excel 中的 sumif () 函数的功能. 工作中用的频率极其高, 像我就几乎天天在用的呢. 也是做个简单的笔记而已. 为啥我总是喜欢对比 Excel 呢, 因为我也渐渐发现, Excel 是业务小姐姐和开发人员 唯一的沟通桥梁. 有时候也不禁感慨, 像我这种, 又能做业务, 做 Excel 表格, 同时又能兼数据开发的小哥哥难道不香嘛, 不抢手嘛...

数据工作: 文员用的 Excel 就相当于开发人员用 SQL. 都是必须会的.

因为我平时用的是数据库是 Sybase IQ, 这种列式的, OLAP 型的. 特点就是, 高吞吐, 查询极快. 正好适合我做数据报表这种的极速响应. 一般如果是 千万级以下的数据呢, 我还是有些用 Mysql, 就是喜欢呀, 没啥. 但千万级以上的数据量, 你会发现 MysSql 的性能会 急剧下降. 就执行下 select count(*) from tb 就直接GG 了.

说个我真实的面试怼怼:

就一些公司老是喜欢问我 Mysql 怎查询优化, 怎么大数据之类的话题, 我真的就懒得回答, 有一次就真的怼:

只有没有钱的公司才老想着优化, 我们都是直接换更好的设备.

扯远了, 回到 sumif 求和. 还是用 Mysql 来演示一把. SQL 大多数都差不多呢.

需求

对某个字段进行 条件求和, 即 Excel 的 sumif 功能

实现

用mysql 的 IF( ) 函数就能实现. 简单以 score 表为例.

mysql> select * from cj.score;
+------+------+-------+
| s_id | c_id | score |
+------+------+-------+
| 0001 | 0001 | 80 |
| 0001 | 0002 | 90 |
| 0001 | 0003 | 99 |
| 0002 | 0002 | 60 |
| 0002 | 0003 | 80 |
| 0003 | 0001 | 80 |
| 0003 | 0002 | 80 |
| 0003 | 0003 | 80 |
+------+------+-------+
8 rows in set (0.00 sec)

需求是, 求出不同 s_id 在 课程id 为 "0001" 的 学生总分数. 当然可以只用 group by having 之类的 哈, 这里就为了举个栗子. 理解意思即可.

select
a.s_id,
sum(if(a.c_id = '0001', score, 0)) as sum_0001
from cj.score as a
group by a.s_id
+------+----------+
| s_id | sum_0001 |
+------+----------+
| 0001 | 80 |
| 0002 | 0 |
| 0003 | 80 |
+------+----------+
3 rows in set (0.00 sec)

当然, 在 IQ 其实是不支持这种 if( ) 语法的, 于是呢, 可以用 case when 来达到同样的效果呢.

-- case when
select
a.s_id,
sum(case when a.c_id = '0001'then score else 0 end) as sum_0001
from cj.score as a
group by a.s_id
+------+----------+
| s_id | sum_0001 |
+------+----------+
| 0001 | 80 |
| 0002 | 0 |
| 0003 | 80 |
+------+----------+
3 rows in set (0.00 sec)

case when 果然是有点强大, 尤其是在我处理, 用户的那些垃圾数据, 和行列转换时经常要用的呢. 不扯了, 就简单一个笔记而已.

SQL 条件求和的更多相关文章

  1. Excel 如何按条件计数和按条件求和(如按月求和)

    1.使用SUMPRODUCT进行多条件计数语法:=SUMPRODUCT((条件1)*(条件2)*(条件3)* …(条件n))作用:统计同时满足条件1.条件2到条件n的记录的个数.实例:=SUMPROD ...

  2. 帝国CMS系统标签e:loop调用的附加SQL条件和排序参数

    帝国CMS6.5以上版本在原来所有信息调用标签基础上增加了两个标签参数:“附加SQL条件”和“显示排序”.支持这两个参数的标签有如下:ecmsinfo.灵动标签.phomenews.phomenews ...

  3. 用SUMIF对超15位的代码进行条件求和,出错了,原因是....

    用SUMIF对超15位的代码进行条件求和,出错了,原因是.... 2017-10-29 23:01 一.问题 有读者朋友问: 用SUMIF进行条件求和时,如果统计的条件是超15位的代码,就会出错,比如 ...

  4. Excel带条件求和——SUMIF函数

    老婆求帮忙,问Excel中怎么跨Sheet带条件求和,就是关于sheet2中筛选出来的数据自动合计在sheet3中 . 比如有个sheet2表中的数据如下: 现在要在sheet3中求合计, 通过分析可 ...

  5. Excel各种条件求和的公式汇总

    经常和Execl打交道的人肯定觉得求和公式是大家时常用到的.Excel里有哪几路求和公式呢?他们的使用方式又是怎样?我为大家汇总一下. 使用SUMIF()公式的单条件求和: 如要统计C列中的数据,要求 ...

  6. 根据List<SqlParameter>返回sql条件(where后)

    /// <summary> /// 根据参数列表返回sql条件(where后) /// </summary> /// <param name="list&quo ...

  7. Excel函数sumproduct应用案例-多条件求和

    作者:iamlaosong 越来越认为sumproduct这个函数实用,过去用sum组函数.改起来复制起来都麻烦,sumif在条件多的时候也认为不方便. 如今改用sumproduct函数,就简单多了. ...

  8. [转]Sumifs函数多条件求和的9个实例

    本文转自:http://m.officezhushou.com/sumif/5187.html 第一部分:sumifs函数用法介绍 excel中sumifs函数是Excel2007以后版本新增的多条件 ...

  9. 一个类搞定SQL条件映射解析,实现轻量简单实用ORM功能

    个人觉得轻简级的ORM既要支持强类型编码,又要有执行效率,还要通俗易懂给开发者友好提示,结合Expression可轻松定制自己所需要功能. Orm成品开源项目地址https://github.com/ ...

  10. mysql sum的多条件求和

    1.无条件求和 sum(字段名): 2.多条件求和 sum(IF(c1>0, c1, 0)); (IF(o.is_cod=0,o.order_amount-IF(b.back_status> ...

随机推荐

  1. js中的模糊搜索( 正则表达式)

    此案例在vue中实现 搜索设备ID示例 <input type="text" name="" placeholder="搜索设备ID" ...

  2. Edge、谷歌浏览器默认下载器开启多线程下载

    浏览器默认下载器开启多线程下载 Chrome 浏览器,地址栏输入并回车: chrome://flags/#enable-parallel-downloading Edge 新版浏览器,地址栏输入并回车 ...

  3. 复杂任务分解:Tree of Thought

    像搭乐高一样玩转AI思考 今天要带大家解锁一个让AI从"单细胞生物"进化成"八爪鱼思考者"的神技--Tree of Thought(思维树).准备好了吗?我们要 ...

  4. 人工智能-A*算法-八数码问题

    一,A*算法设计思想 A*算法(A-star)是一种寻路算法,主要用于游戏.机器人等领域. 它的设计思想是将最短路径搜索问题转化为一个优化问题,通过计算每个节点的评分(f(n) = g(n) + h( ...

  5. 堆排序(标准版)(NB)

    博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import random def sift(li, low, high): # ...

  6. 一个属性同时使用Autowired和Resource注解会发生什么?

    首发于公众号:BiggerBoy 右侧图片wx扫码关注有惊喜 欢迎关注,查看更多技术文章 如题,如果在同一个属性上使用@Autowired注解注入bean1,然后使用@Resource注解注入bean ...

  7. Obsidian 笔记一键转换发布为 Jekyll 博客

    Obsidian 是一款功能强大且灵活的知识管理和笔记软件,与 Jekyll 这一轻量级静态博客框架的结合,既能保留 Obsidian 的网状知识关联优势,又能借助 Jekyll 的高效编译能力快速生 ...

  8. 『Plotly实战指南』--饼图绘制基础篇

    在数据可视化的世界里,饼图是一种直观且广泛使用的图表类型. 它能够将数据各个部分占整体的比例关系清晰地展现出来,适用于诸如市场占有率分析.调查结果分布.预算分配等多个领域. 饼图以扇形面积比例直观展示 ...

  9. RuoYi-vue配置记录

    如果这个项目能顺利运行,标志着Springboot+vue的前后端环境都配好了. 一.官方文档 若依官方文档:介绍 | RuoYi,在这个地方克隆/下载项目源代码https://gitee.com/y ...

  10. datasnap的监督功能【1】-服务端获取客户端连接信息

    在服务端获取连接的客户端相关info: TDBXClientInfo = recoed IpAddress : String; ClientPort : String; Protocol : Stri ...