Mysql统计不同区间的数据
1.sum(if(表达式,1,0))
select count(*),sum(if(amount<=10,1,0)as `数量小于10`,sum(if(amount>10 and amount<=20,1,0)as `数量小于20大于10`
from orders;
统计总客户数,和销量在(0,10]的客户数,(10,20]的客户数所用表orders为:
Company | amount |
---|---|
Ajjhd | 2 |
Daljj | 12 |
Rajs | 9 |
Fghsd | 14 |
… | … |
2.count(if(表达式,true,null))
解析:
- sum(if(category=1,size,0))中 sum函数返回一个值类型的数值,如果category=1,则返回size,如果category不等于1就返回0。
- count(if(category=1,true,null))中count函数返回一个布尔值类型的数值,如果category=1,返回true,如果category不等于1返回null,如果写成count(If(category=1,1,0) 则返回的全是true,也就是说全都会计数,而count()间断内容是true还是null,如果不是null就计数,如果是null就不计数。