假设我们有一个像这样的简单表格

DATE          VALUE
--------------------
2013-01-01    23
2013-06-12    34
2013-07-22    788
2013-12-16    234
2014-01-23    56
2014-04-19    88
2014-09-23    7987
2014-11-05    66
2015-02-17    987
2015-05-05    896

现在假设我们要提取按年份分组的平均值,我们将使用
SELECT AVG(`VALUE`) FROM tablename GROUP BY YEAR(`DATE`)

但是,如果我们定义的年份不是从 1 月到 12 月,而是从 7 月到 6 月(如果您生活在南半球,这对于大量数据来说意义重大)。

我确信必须有一种简单的方法来实现 7 月 YEAR 到 6 月 YEAR+1 分组。它似乎只是逃避我。

-- 编辑 --

惊人的!在发布这个问题的几分钟内就出现了两个很好的解决方案,两者都值得被接受。我接受了 Roland 的解决方案,因为它的简洁性,但是 Leo Tara 的回复让我意识到我忘记了输出相关的 austral 年份。因此,基于这两个答案,我想出了这个解决方案,它完全符合我的要求:
SELECT
YEAR(`DATE` - INTERVAL 6 MONTH) as `australyear`,
AVG(`VALUE`)
FROM tablename
GROUP BY YEAR(`DATE` - INTERVAL 6 MONTH)

最佳答案

分组时只需在日期上加上 6 个月。我不知道 mysql 的确切语法,抱歉。

伪代码:

SELECT AVG(`VALUE`) FROM tablename GROUP BY YEAR(`DATE` + '6 MONTHS');

关于MySQL:按澳大利亚年份分组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21278542/

10-16 15:41