最近在处理查询关于运营的数据,主要是根据已有资料写SQL语句进行查询,虽然这并不是很难,但还是有很多收获,今天在写sql,用来统计每天访问的手机用户个数。
之前我们一直都用过count来统计,用户的数量,但对于count的写法并没有做过非常深入的了解,当时想着只要能查出来就行,何必计较那么多呢?今天看到了别人写的sql语句,我的想法有了很大的改变。count来统计总数有很多种写法,咱们一一来了解。
count(*):
是对行数的统计,将包括值为null的统计
count(主键):
不包括对null值的统计
count(1):
并不是统计第一列。count(1)和count(*)都包括对有null值的统计,而且统计出来的数据一样。而当我们采用分组Group By时,就会根据跟组的类,来统计分组的个数.
下面是一个例子,用来说明问题
SELECT
sum(r.flowValue),
count(1),
r.phoneNumber
FROM
ChargedFlowRecords r
WHERE
<span style="white-space:pre"> </span> r.chargeType = '直充'
AND r.chargeState = '充值成功'
AND DATE_FORMAT(r.requestDate, '%Y%m%d') >= '20160205'
AND DATE_FORMAT(r.requestDate, '%Y%m%d') <= '20160531'
GROUP BY
r.phoneNumber
ORDER BY
sum(r.flowValue) DESC;
得到的结果如下:
总结:
每一个小的知识点都有值得学习的地方,之前可能会忽略这些,但当我们回头再来看到的时候会发现有很多知识值得我们学习,关于这三种那种速度更快,还需要后期再做更多的试验才能得出结果。