【问题标题】:how to get week average from month in mysql?如何在mysql中获取月份的周平均值?
【发布时间】:2012-03-20 20:52:03
【问题描述】:

我在一张表中有日、月、年、值列,这里我需要获取一个月内每周的平均值。 如何得到。请帮助我解决这个问题。

select avg(value) from table group by month 

给出月平均值。

select avg(value) from table group by day

给出日平均值。 但是如何从月份字段中获取周平均值。

【问题讨论】:

  • 你能发布一些示例数据吗...?

标签: mysql sql date average


【解决方案1】:

您不能“从一个月中获得几周”,因为其中一个不是另一个的子集。
1 个月中的天数(以及因此的周数)因月而异,并且仅在非闰年 - 并且仅在 2 月 - 一个月中正好有 4 周。

您应该使用原始日期字段并使用日期函数按周限制/分组数据。
通过
WEEK(timestamp)
在 mySQL 中获得一周 或
YEARWEEK(timestamp)

WEEKOFYEAR(NOW())

DATE_FORMAT($yourDate, \'%X %V\') as week

【讨论】:

  • @RameshK,迈克尔是正确的。有些月可能会开始说.. 周二、周三或周四。因此,在开始时会留下半周/周,也可能在结束时留下。看看 2012 年 2 月...总共 5 周,第一个和最后一个部分。这将如何准确地描绘“平均”......
【解决方案2】:

可能有更好的方法,但我的第一个想法是编写一个查询,计算每一天的一年中的第几周并将它们分组。 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_weekofyear

类似:

SELECT avg(value) FROM table GROUP BY WEEKOFYEAR(CONCAT(year, '-', month, '-', day))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    相关资源
    最近更新 更多