You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8.0中LAST_DAY函数使用异常求助:按客户月终值查询问题

问题排查与解决

你的SQL写法存在逻辑错误,导致结果不符合预期:

核心问题

你仅按customer_id和LAST_DAY(txn_date)分组,但未对txn_type和txn_amount做聚合处理。在MySQL 8.0默认启用的ONLY_FULL_GROUP_BY模式下,这种写法会返回分组内随机的非聚合字段值,完全无法实现你想要的每月交易汇总需求。从你的预期结果来看,实际需求是每个客户每月每种交易类型的金额总和。

修正代码

SELECT 
    customer_id,
    LAST_DAY(txn_date) AS months,
    txn_type,
    SUM(txn_amount) AS txn_amount
FROM data_bank.customer_transactions
GROUP BY customer_id, months, txn_type
ORDER BY customer_id, months;

效果验证

  • 针对customer_id=1的1月数据:两条deposit记录的金额156+156=312,与预期结果一致;
  • 3月的两条purchase记录564+100=664,完全匹配预期;
  • 若你不需要区分交易类型,只想获取每月总金额,可以移除GROUP BY中的txn_type,同时去掉SELECT里的txn_type字段(或用GROUP_CONCAT(txn_type)合并类型)。

内容的提问来源于stack exchange,提问作者ASD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:52:12