我有一个数据集(比如,“x”标注“xdate”),我想逐周获得每周平均值。我可以使用SQL(对于MYSQL)这样做:
SELECT
YEAR(xdate),
WEEKOFYEAR(xdate), avg(x)
FROM
xtable
GROUP BY
YEAR(xdate),
WEEKOFYEAR(xdate);
但是,我还希望将这几周的工作日分为“周初”。看documentation,似乎可以使用参数来指示星期一或周一的周开始。我想打电话,本周开始是一周中的任何一天。所以平均值可能是从周三到周三,依此类推。有没有办法实现这个目标?
答案 0 :(得分:3)
如果添加一天,您可以将功能逻辑移动一天。
例如:
SELECT
YEAR(xdate),
WEEKOFYEAR(date_add(xdate, interval 1 day) ),
avg(x)
FROM
xtable
GROUP BY
YEAR(xdate),
WEEKOFYEAR(date_add(xdate, interval 1 day));
通过这种方式,您可以根据需要将一周的开头移动。