首页 » Web前端 » phpmysql多个前提技巧_mysql按前提统计数量

phpmysql多个前提技巧_mysql按前提统计数量

访客 2024-12-15 0

扫一扫用手机浏览

文章目录 [+]

问题描述

有一个信息表info,他的u_id是关联的用户的id,他的m_id是关联的电话的id,每打一次电话就新增一条记录,m_id<10表示是公司内部职员拨打,m_id>=10表示是公司外部职员拨打。
(还可能细分到m_id<=5表示部门领导)

phpmysql多个前提技巧_mysql按前提统计数量

数据库的信息如下:

phpmysql多个前提技巧_mysql按前提统计数量
(图片来自网络侵删)

方法1:利用GROUP BY

这种GROUP BY方法的最大问题在于:无法区分所得到的结果。
不知道哪个值是公司内部,哪个是公司外部

因此,为了区分统计结果,修正后的sql如下:

条件表达式作为字段时,该字段的值便是该条件表达式的值,因此,对应我们的例子,waibu = 1 也便是表示 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字段进行计数。

标签:

相关文章