查看: 79|回复: 0

【MySQL】常见的业务处理-进行分区间的统计

[复制链接]

497

主题

497

帖子

999万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9995293
发表于 2020-3-14 11:14:57 | 显示全部楼层 |阅读模式
场景

在日常工作中我们常常有这样的需求:统计所有数据区间的信息。

案例:统计某个商城系统中所有登录用户消费金额大于1000元的,800到1000元的,以及800元以下的人数:

用户登录表:
11.png


商品订单表:

22.png


MySQL中的函数

条件判断函数
函数        作用
CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2... ] [ELSE rn]  END        如果expr的值等于v1,v2等,则返回对应位置的THEN后面的结果,否则返回ELSE后面的结果rn。
IFNULL(V1, V2)        如果v1不为NULL返回v1,否则返回v2

使用MySQL中的条件判断函数:

SELECT COUNT(CASE WHEN IFNULL(total_money, 0) >=1000 THEN a.customer_id END ) AS '大于1000'
                ,COUNT(CASE WHEN IFNULL(total_money, 0) >=800 AND IFNULL(total_money, 0)<800 THEN a.customer_id END ) AS '800~1000'
                ,COUNT(CASE WHEN IFNULL(total_money, 0) <800 THEN a.customer_id END) AS '小于800'
        FROM customer_login AS a
        LEFT JOIN
                (SELECT customer_id, COUNT(order_money) AS total_money FROM order_master GROUP BY customer_id) AS b
        ON a.customer_id=b.customer_id;
统计结果如下:
33.png


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|霸气资源网

GMT+8, 2020-4-9 18:07 , Processed in 0.765625 second(s), 44 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.