每周从每日数据中过滤并选择本周的第一次出现

时间:2011-04-22 05:22:57

标签: mysql

假设您每天都有一个包含库存时间序列的表格。 现在您需要每周过滤一个数据点,因为您需要每周数据进行一些分析。你没有每周的平均值,因为这会留下大部分的变化。

这将是我最初的方法,但不清楚在给定的一周中选择了哪个数据点。

SELECT date, price from stock_series
GROUP BY WEEK(date)

1如何确保它始终是特定周内存在的第一个数据点?

编辑:

2如果上述查询保持原样 - 每周选择哪个数据点?在这种情况下,MySQL逻辑是什么?还是只是不可预测?

2 个答案:

答案 0 :(得分:2)

如果您希望更好地控制它,可以尝试使用子查询:

SELECT date,price
FROM stock_series
WHERE date IN 
(
 SELECT MIN(inner.date) 
 FROM stock_series inner
 GROUP BY WEEK(inner.date)
) GROUP BY date

我在主查询中添加了GROUP BY日期,因为您每天可能有多个条目,否则可能会被忽略。

编辑:

或尝试加入它:

SELECT date,price
FROM stock_series
JOIN 
(
 SELECT MIN(date) AS innerdate
 FROM stock_series
 GROUP BY WEEK(date)
) inner ON date=innerdate;

答案 1 :(得分:1)

您可以按日期升序排序,这样可以为您提供WEEK()组的第一个结果。

SELECT date,price from stock_series
GROUP BY WEEK(date)
ORDER BY date