假设您每天都有一个包含库存时间序列的表格。 现在您需要每周过滤一个数据点,因为您需要每周数据进行一些分析。你没有每周的平均值,因为这会留下大部分的变化。
这将是我最初的方法,但不清楚在给定的一周中选择了哪个数据点。
SELECT date, price from stock_series
GROUP BY WEEK(date)
1如何确保它始终是特定周内存在的第一个数据点?
编辑:
2如果上述查询保持原样 - 每周选择哪个数据点?在这种情况下,MySQL逻辑是什么?还是只是不可预测?
答案 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