mysql 有条件地计算行数 count

博客介绍了SQL的标准行统计函数count,它在实际应用中很普遍,还提及有条件地统计行数。以业务员终端门店拜访表为例给出统计拜访次数、门店数的SQL。同时介绍了count的几点技巧,如count(col)会跳过null值,部分count可用sum替代,条件统计可利用mysql布尔值特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

count是sql的一个标准行统计函数,在实际应用中很是普遍,还有另外一种情况也经常会被用到:有条件地统计行数,看个DEMO:

下表为一个业务员终端门店拜访表, sale_zd_access:

sb_noshop_idshop_namesaler_idsb_salessb_time
201709070002100测试0904100152017-09-07 09:30:11
201709220001100测试0904100382017-09-07 14:30:11
201709220001657凤阳县鑫博食品100382017-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), …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值