vlambda博客
学习文章列表

MySQL某公司面试题--累计值的计算案例

题目:

根据下列数据,计算每个用户每月的最大的一单消费金额、月度消费次数、月度总消费金额、按月累计消费金额。消费金额按照数据库中的折后总价计算。

MySQL某公司面试题--累计值的计算案例


SQL语句:

# 需求:计算每个用户每月的最大的一单消费金额、按月累计消费金额、月度总消费金额。消费金额按照数据库中的折后总价计算。SET @SUM = 0, @c = 0, @k =NULL;
SELECT T1.月份, T1.最大一单消费金额, T1.月度消费次数, IF(@k=客户编号,@SUM := @SUM + T1.月度消费金额,@SUM := T1.月度消费金额) AS 月累计消费金额, @c := T1.月度消费金额 AS 月度消费金额, @k := T1.客户编号 AS 客户编号FROM ( # ①先计算每月的最大的一单消费金额、按月累计消费金额、月度总消费金额 SELECT 客户编号, DATE_FORMAT(下单时间,"%y-%m") AS 月份, MAX(折后总价) AS 最大一单消费金额, COUNT(客户编号) AS 月度消费次数, SUM(折后总价) AS 月度消费金额 FROM 客户分类表 GROUP BY 客户编号, DATE_FORMAT(下单时间,"%y-%m") ORDER BY 客户编号 ASC, DATE_FORMAT(下单时间,"%y-%m") ASC) AS T1

答案: