版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/chuangxin/article/details/90349708
count是sql的一个标准行统计函数,在实际应用中很是普遍,还有另外一种情况也经常会被用到:有条件地统计行数,看个DEMO:
下表为一个业务员终端门店拜访表, sale_zd_access:
sb_no
shop_id
shop_name
saler_id
sb_sales
sb_time
201709070002
100
测试0904
1001
5
2017-09-07 09:30:11
201709220001
100
测试0904
1003
8
2017-09-07 14:30:11
201709220001
657
凤阳县鑫博食品
1003
8
2017-09-22 09:30:11
统计拜访次数、门店数,sql如下:
-- 3, 2, 2家门店被拜访了3次
select count(sb_no) access_times, count(distinct shop_id) shop_count
from sale_zd_access
关于count的几点hacks:
1)count(col), 当col有null值时,会跳过null值,假设有5行记录,其中有一行是null值,则count(col) = 4
2)部分count可以用sum代替,如拜访次数可以用sum(1)替代:
select sum(1) access_times, count(distinct shop_id) shop_count
from sale_zd_access
3)当用sum替代时,记住mysql boolean值,true = 1, false = 0,因此条件统计时直接可以使用下述方式: 统计col1 = val1的行数,col2 = val2的行数
select sum(col1 = val1), sum(col2 = val2), …