sql 条件统计,count+if+sum

1,前提

看同事写的sql语句时,觉得他写的这个count+sum+if的sql还挺新鲜,

学习记录下,感觉这个挺适合用来对历史数据做条件统计

2,count使用结果

sql 复制代码
  select count(0);//1
  select count(1);//1
  select count(null);//0
  select count(true);//1
  select count(false);//1 

3,应用

这个SQL语句的含义是从名为"test"的表中查询一些统计数据。下面是对每个选择的列的解释:

  • coming_times :计算在接下来的3天内到期且状态为"normal"或"over"的记录数量。
  • coming_amount :计算在接下来的3天内到期且状态为"normal"或"over"的记录的金额总和。
  • already_times :计算状态为"ahead"、"normal"或"over"的记录数量。
  • already_amount :计算状态为"ahead"、"normal"或"over"的记录的金额总和。

这个SQL语句的目的是提供关于"test"表中不同状态和到期时间范围的记录的统计信息

sql 复制代码
 SELECT
 	COUNT(IF(expire_date < DATE_ADD(now(), INTERVAL 3 DAY) AND expire_date >= now() AND status IN ('normal', 'over'), true, null)) AS coming_times,
 	SUM(IF(expire_date < DATE_ADD(now(), INTERVAL 3 day) AND expire_date >= now() AND status IN ('normal', 'over'),amount,0)) AS coming_amount,
 	COUNT(IF(status IN ('ahead','normal', 'over'),true,null)) AS already_times,
 	SUM(IF(status IN ('ahead','normal', 'over'),amount,0)) AS  already_amount
 FROM test
        
相关推荐
SamChan9016 分钟前
用PostgreSQL+pgvector构建PDF翻译记忆库:向量相似度检索+增量更新实战
数据库·python·ai·postgresql·pdf·wpf
蒲锘22 分钟前
DevOps 实验阶段四:Infra 节点 + MySQL + Spring Boot 容器化
spring boot·mysql·docker
裕晟资质规划34 分钟前
首次办理军工保密资质:咨询服务选择要点与全流程交付清单(评估框架)
大数据·运维·服务器·网络·数据库·经验分享
Data_Journal9 小时前
用于网页抓取的 Node-unblocker
大数据·开发语言·数据库·python·scrapy
涤生大数据9 小时前
一次“没有运行日志”的DolphinScheduler任务失败排查
大数据·数据库·人工智能·状态模式
专注API从业者9 小时前
告别人工盯品!借助 Open Claw 搭建电商商品自动化监控与数据分析系统(完整可运行源码)
大数据·运维·数据库·数据分析·自动化
viskaz10 小时前
数据库迁移流程学习
数据库
auspicious航10 小时前
PostgreSQL写入慢全攻略:原因排查与性能调优实战
数据库·postgresql
IvorySQL11 小时前
PostgreSQL 日报|逻辑复制行过滤致数据丢失(8 月 21 日)
数据库·postgresql
重生之我是Java开发战士11 小时前
【Java EE】事务与事务的传播机制
数据库·java-ee