排除Query中的行

时间:2016-05-24 14:48:58

标签: mysql

我的数据库中的数据可以追溯到15年前,我想采用过去几年的平均值并将其与当前年份的数据进行比较。 我有一年的专栏,我在排除当前年份然后单独显示当前年份时难以获取数据的平均值。

编辑:这就是我的表[年份,数字],我试图达到[平均数字(除当前年份以外的所有年份),数字(当前年份)]

1 个答案:

答案 0 :(得分:1)

嗯,你的问题缺少很多信息,我不能在没有看到实际表格结构的情况下为你建立一个有效的查询,但是你可以根据实际的表/列名称调整它自己:

SELECT t.YourComparingColumn as this_year,s.last_year
FROM YourTable t
CROSS JOIN(SELECT AVG(t1.YourComparingColumn) as last_year FROM YourTable t1
           WHERE t1.year < year(now())) s
WHERE t.year = year(now())

如果您希望按任何ID或其他内容进行分组:

SELECT t.id,t.YourComparingColumn as this_year,s.last_year
FROM YourTable t
INNER JOIN(SELECT t1.id,AVG(t1.YourComparingColumn) as last_year FROM YourTable t1
           WHERE t1.year < year(now())
           GROUP BY t1.id) s
 ON(t.id = s.id)
WHERE t.year = year(now())

如果每年有超过1行,你也应该加总。