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

MySQL数值相乘问题:phpMyAdmin中账单数据求和未乘数量列致结果异常

解决phpMyAdmin中可计费项求和错误的问题

你遇到的问题根源很清晰——计算收费/未收费总额时,没把单项金额乘以对应的BIL_Quantity数量字段,这就是为什么2018-03-07的未收费总额只得到105(正确值315应该是105×3,说明那一行的数量是3)。

下面是修正后的SQL查询,分两种场景供你选择:

基础版(仅统计___BillableDatas表数据)

SELECT
    BIL_Date AS `日期`,
    -- 计算已收费项的总金额:金额×数量后求和
    SUM(CASE WHEN BIL_Status = 'charged' THEN BIL_Amount * BIL_Quantity ELSE 0 END) AS BIL_Sum_Charged,
    -- 计算未收费项的总金额:金额×数量后求和
    SUM(CASE WHEN BIL_Status = 'notcharged' THEN BIL_Amount * BIL_Quantity ELSE 0 END) AS BIL_Sum_NotCharged
FROM
    ___BillableDatas
GROUP BY
    BIL_Date
ORDER BY
    BIL_Date;

关联销售税版(如果需要结合___SalesTaxes计算含税金额)

假设两张表通过BIL_TaxID和ST_TaxID关联,税率字段为ST_TaxRate(百分比格式,比如10代表10%):

SELECT
    bd.BIL_Date AS `日期`,
    SUM(CASE WHEN bd.BIL_Status = 'charged' THEN bd.BIL_Amount * bd.BIL_Quantity * (1 + st.ST_TaxRate/100) ELSE 0 END) AS BIL_Sum_Charged,
    SUM(CASE WHEN bd.BIL_Status = 'notcharged' THEN bd.BIL_Amount * bd.BIL_Quantity * (1 + st.ST_TaxRate/100) ELSE 0 END) AS BIL_Sum_NotCharged
FROM
    ___BillableDatas bd
LEFT JOIN
    ___SalesTaxes st ON bd.BIL_TaxID = st.ST_TaxID
GROUP BY
    bd.BIL_Date
ORDER BY
    bd.BIL_Date;

关键说明

  • 核心修改:在SUM()函数中加入* BIL_Quantity,确保每条记录的金额先乘以数量再汇总
  • 使用CASE语句区分不同状态的记录,分别计算对应总额
  • GROUP BY BIL_Date保证结果按日期分组展示
  • 关联销售税时用LEFT JOIN,避免因为没有匹配的税项导致数据丢失

执行这个查询后,2018-03-07的未收费总额应该就能得到正确的315了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:01:43