SQL面试提问 :如何计算每个月的订单数量和总金额以及与上个月相比的环比增长率
🔥 面试现场还原
“计算每月订单量、总金额及环比增长率”——这道出现率高达87%的SQL考题,竟让3年经验的候选人翻车!上周面试中:
-
候选人A:嵌套5层子查询,执行计划爆炸💥
-
候选人B:忘记处理除零错误,结果出现
Infinity
😱 -
候选人C:用Python思路写SQL,性能血崩⏳
方法一:使用窗口函数 (推荐)
-- 步骤1: 计算基础月度数据
WITH monthly_data AS (SELECTDATE_FORMAT(order_date, 'yyyy-MM') AS order_month,COUNT(order_id) AS order_count,ROUND(SUM(amount), 2) AS total_amountFROM ordersGROUP BY DATE_FORMAT(order_date, 'yyyy-MM')
)-- 步骤2: 计算环比增长率
SELECTorder_month,order_count,total_amount,-- 订单数量环比ROUND((order_count - L