我的收入:
我想从这两个表中获取数据:
我正在使用以下查询:
SELECT DATE_FORMAT(my_costs.DATE, "%M-%Y") AS Period, SUM(my_costs.sum) AS Costs,
ROUND(SUM(my_costs.sum)/DAY(LAST_DAY(my_costs.date)), 0) AS Average,
SUM(my_earnings.sum)
FROM my_costs
LEFT JOIN my_earnings ON DATE_FORMAT(my_costs.DATE, "%M-%Y") = DATE_FORMAT(my_earnings.date, "%M-%Y")
GROUP BY DATE_FORMAT(my_costs.DATE, "%M-%Y")
ORDER BY Period DESC
此请求成功地为我提供了期间、成本和收益。但显示的收入金额不正确。数字远高于预期,每月应该不超过10,000
答案 0 :(得分:0)
连接后的聚合可能不准确,因为行重复或丢失。我建议使用 union all
然后聚合:
SELECT DATE_FORMAT(ce.DATE, '%M-%M') AS Period,
SUM(ce.costs) AS Costs, SUM(ce.Expenses) as expenses,
ROUND(SUM(ce.sum)/DAY(LAST_DAY(ce.date)), 0) AS daily_Average
FROM ((SELECT date, sum as costs, 0 as expenses
FROM my_costs
) UNION ALL
(SELECT date, 0, sum
FROM my_earnings
)
) ce
GROUP BY period
ORDER BY MIN(ce.DATE) DESC;
请注意,我更改了 ORDER BY
,因此结果按时间顺序排列。