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
        
相关推荐
Darling_00几秒前
LeetCode_sql_day28(1767.寻找没有被执行的任务对)
sql·算法·leetcode
zxrhhm5 分钟前
SQLServer TOP(Transact-SQL)
sql·sqlserver
叫我:松哥14 分钟前
基于Python flask的医院管理学院,医生能够增加/删除/修改/删除病人的数据信息,有可视化分析
javascript·后端·python·mysql·信息可视化·flask·bootstrap
工作中的程序员22 分钟前
ES 索引或索引模板
大数据·数据库·elasticsearch
严格格25 分钟前
三范式,面试重点
数据库·面试·职场和发展
微刻时光42 分钟前
Redis集群知识及实战
数据库·redis·笔记·学习·程序人生·缓存
单字叶1 小时前
MySQL数据库
数据库·mysql
mqiqe1 小时前
PostgreSQL 基础操作
数据库·postgresql·oracle
just-julie1 小时前
MySQL面试题——第一篇
数据库·mysql
趋势大仙1 小时前
SQLiteDatabase insert or replace数据不生效
android·数据库