【发布时间】:2020-10-16 06:17:33
【问题描述】:
我有一台装有 MySQL 5.7 的服务器。
我有两张桌子。第一个 t 包含每个 id 的创建日期。第二个表t0 包含每个id 每天的利润记录。
我想为每个 id 以及第一天获取第一天和第二天 30 天的利润总和列。
SELECT t.created_at,
t.id,
sum(t1.profit) profit_1_week,
sum(t2.profit) profit_2_week,
sum(t3.profit) profit_1_day
FROM t
LEFT JOIN t0 t1 ON t.id = t.id
AND t1.inport_date BETWEEN t.created_at AND DATE_ADD(t.created_at, INTERVAL 30 DAY)
LEFT JOIN t0 t2 ON t.id = t.id
AND t2.inport_date BETWEEN DATE_ADD(t.created_at, INTERVAL 30 DAY) AND DATE_ADD(t.created_at, INTERVAL 60 DAY)
LEFT JOIN t0 t3 ON t.id = t.id
AND t3.inport_date BETWEEN t.created_at AND DATE_ADD(t.created_at, INTERVAL 1 DAY)
GROUP BY t.created_at,
t.id
ORDER BY t.created_at
此代码运行但总和是错误的,因为第一天的总和比每月多得多。我错在哪里以及如何解决?
【问题讨论】:
-
t.Id 始终与您的 on 子句中的 t.Id 相同
标签: mysql sql datetime sum pivot