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
        
相关推荐
我科绝伦(Huanhuan Zhou)12 分钟前
数据库管理员密码重置指南:MySQL, Oracle, PostgreSQL
mysql·oracle·dba
skywalk816319 分钟前
超强人工智能解决方案套件InfiniSynapse:精准的业务理解、对各种数据源进行全模态联合智能分析--部署安装@Ubuntu22.04 & @Docker
数据库·人工智能·python·docker·infini-synapse
亚林瓜子20 分钟前
AWS Lambda Python + AWS Secrets Manager + AWS Aurora Mysql
python·mysql·aws·lambda·aurora·vpc·secrets
纪伊路上盛名在1 小时前
jupyter内核崩溃
前端·数据库·jupyter·生物信息·基因组·k-mer
Edingbrugh.南空1 小时前
Hive SQL:一小时快速入门指南
hive·hadoop·sql
曼汐 .1 小时前
Python实战应用-Python操作MySQL数据库
数据库·mysql
bcxwz6691 小时前
mysql 创建大写字母的表名失败
数据库·mysql
数据知道1 小时前
【系统分析师】第5章-基础知识:数据库系统(核心总结)
数据库·数据库系统·系统分析师
Mr_Xuhhh1 小时前
数据库期末
数据库·oracle
vace cc1 小时前
sql列中数据通过逗号分割的集合,对其中的值进行全表查重
数据库·sql