【问题标题】:Group records by year, having start and end date按年份分组记录,有开始和结束日期
【发布时间】:2015-04-06 21:06:33
【问题描述】:

我想构建一个图表,按年份显示启用项目,例如:

项目的 start_date 为 04-06-2014,end_date 为 07-09-2016,因此该项目在 2014、2015 和 2016 年启用。

我如何构建一个查询来获取这些按年份分组的记录,因为项目可以按不同年份计算?

【问题讨论】:

  • 直到现在我都在尝试通过 Ruby 来管理它,获取去年和最新的一年来获得一个范围,在今年的范围上做一个 foreach。之后,我将尝试检查 start_date 的年份是否小于或等于 year(range) 和 end_date 的年份是否高于或等于 year(range),并计算它。但是因为它会在数据库中产生很多命中。我正在尝试在一个 Select 中找到一种方法。
  • 一种方法是生成一个年份列表(每年有一个函数 return 或者只是将记录插入表中)。然后,您根据该记录集加入您的表,包括该年份属于的任何记录

标签: mysql sql


【解决方案1】:

您没有提供足够的信息...不过,基本思想是使用聚合函数,例如:

SELECT YEAR(date_field) As MyYear, SUM(numeric_field) AS MyValue
FROM TableName
WHERE (start_date_field >= '2014-04-06' AND  end_date_field <= '2016-07-09')
GROUP BY YEAR(date_field)

更多信息请见:
Date and Time functions
Aggregate functions

【讨论】:

    猜你喜欢
    • 2021-09-08
    • 2021-07-26
    • 2014-03-02
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多