【发布时间】:2017-06-15 19:31:07
【问题描述】:
我正在尝试比较每周结果。更具体地说,我想一周又一周地获得差异。
首先我想展示一下结果应该是什么样子:
CalendarWeek currently previous_week delta
2016-01 200
2016-02 210 200 10
2016-03 205 210 -5
2016-04 230 205 25
...
我有一个解决方案,但速度很慢。
目前我正在这样做:
SELECT CalendarWeek, cur_value - prev_value AS delta
FROM
(SELECT CalendarWeek, COUNT(Change_ID) AS cur_value
FROM Changes
WHERE ...
GROUP BY CalendarWeek) AS cur_week
LEFT JOIN
(SELECT CalendarWeek, COUNT(Change_ID) AS prev_value
FROM Changes
WHERE ...
GROUP BY CalendarWeek) AS prev_week
ON cur_week.CalendarWeek = prev_week.CalendarWeek + 1
我的问题是,运行子查询需要很多时间(我为这个展示做了简化)。 SELECT 和 COUNT() 运行 45 秒。每个 = 1.5 分钟。我认为应该有更合适的解决方案。我只需要将 prev_value 移动 1 行或偏移 1 行。
【问题讨论】:
标签: mysql sql join subquery offset