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
答案: