mysql count()只统计一部分_mysql 有条件地计算行数 count

版权声明:本文为博主原创文章,转载请注明出处! 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), …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值