查询还款表中的三种支付方式每个使用的数量
- 表名:receive
- 字段名:payment_type 1=连连、2=支付宝、3=手工
- 总行数 130721:连连71255、支付宝59396、手工70
方法一:使用GROUP BY 【70ms】
SELECTpayment_type
AS '还款方式',COUNT(payment_type
) AS '数量' FROMreceive
GROUP BYpayment_type
-
方法二:使用嵌套的SELECT 【100~110ms】
在每个 SELECT子句 中统计一个条件下的数据,然后用一个 主SELECT 把这些统计数据整合起来SELECT (SELECT COUNT(*) FROM `receive` WHERE `payment_type` =1) AS `连连`, (SELECT COUNT(*) FROM `receive` WHERE `payment_type` =2) AS `支付宝`, (SELECT COUNT(*) FROM `receive` WHERE `payment_type` =3) AS `手工`
-
方法三:使用CASE WHEN: 【60ms】
这里的COUNT和CASE WHEN联合使用,做到了分类计数。先使用CASE WHEN,当满足条件时,将字段值设置为 1, 不满足条件时,将字段值设置为NULL,接着COUNT函数仅对非NULL字段进行计数SELECT COUNT( CASE WHEN `payment_type` =1 THEN 1 ELSE NULL END ) AS `连连`, COUNT( CASE WHEN `payment_type` =2 THEN 1 ELSE NULL END ) AS `支付宝`, COUNT( CASE WHEN `payment_type` =3 THEN 1 ELSE NULL END ) AS `手工` FROM `receive`