【问题标题】:select rows as month according to timestamp根据时间戳选择行作为月份
【发布时间】:2016-01-22 00:28:03
【问题描述】:

我有一个表 - 帐户,它有 3 列:id、timestamp 和 value。 我需要创建一个查询,该查询返回一个表,该表在每一行中都是月份(2、3 等)和本月的值的总和。

例如:如果我的表从 1 月开始有 3 行,从 2 月开始有一行,则查询将在第一行返回一个两行表,它将是 1 和 1 月值的总和,第二行将是 2 和二月值的总和。

我不知道如何开始。谁能帮帮我?

【问题讨论】:

  • 查看group bysum() 这些可能就是您想要的。另外,它是 MySQL 还是 SQL Server。它们是完全不同的产品。
  • 请正确标记!现在你有 2 个不同的答案,一个用于 MySQL,一个用于 MS SQL Server……浪费人们的时间并不公平。

标签: mysql sql sql-server timestamp


【解决方案1】:

您需要做的就是对值求和,并使用 mysql 的 MONTH() 函数从时间戳中提取月份

SELECT SUM(value) as total_amount, MONTH(timestamp) as month_num
FROM table
GROUP BY month_num

当你有一个聚合函数(在我们的例子中是它的 SUM)来知道如何对你的公共字段进行分组时,使用 GROUP BY。如果没有分组,您将所有行加在一起

【讨论】:

    【解决方案2】:

    SQL Server 可以使用 DATEPART 函数。

    SELECT DATEPART(MONTH, your_date_column) AS month_
    , SUM(your_value) AS value_
    
    FROM your_table 
    
    GROUP BY DATEPART(MONTH, your_date_column)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 2017-09-08
      • 2023-04-02
      • 1970-01-01
      • 2020-07-02
      • 2012-02-24
      相关资源
      最近更新 更多