MySQL统计数量的语法

发布时间: 2023-11-21 11:52 阅读: 文章来源:1MUMB2315PS

问题描述

有一个信息表info,他的u_id是关联的用户的id,他的m_id是关联的电话的id,每打一次电话就新增一条记录,m_id=10表示是公司外部人员拨打。(还可能细分到m_id 10 的值为1,因此,第二行中的数字代表公司外部人员拨打的电话数量

优缺点

缺点是显而易见的,由于使用了条件表达式作为分组依据,它只能做二元的划分,对于要分成多类进行统计的情况不能够胜任。比如要分别统计电话id在1~5、5~10,10~15的数量就无法实现了。

另外,由于使用了GROUP BY,因此涉及到排序,执行时间上要更长。

方法2:使用嵌套的select

使用嵌套的select也可以达到目的,在每个select子句中统计一个条件下的数据,然后用一个主select把这些统计数据整合起来。

优缺点

优点就是直观,而且速度也比GROUP BY要快。虽然是3条select语句,看起来比GROUP BY的方案多了2条语句,但是它不涉及到排序,这就节省了很多时间。

缺点可能就是语句稍多。

方法3:使用CASE WHEN

这里的COUNT和CASE WHEN联合使用,做到了分类计数。先使用CASE WHEN,当满足条件时,将字段值设置为 1, 不满足条件时,将字段值设置为NULL,接着COUNT函数仅对非NULL字段进行计数。

•••展开全文