【问题标题】:MySql fetch records date wise from day,month,separate columnsMySql 从日、月、单独的列中获取日期明智的记录
【发布时间】:2017-05-28 02:16:14
【问题描述】:

我有一个名为 Subscription_stats 的表,其列为 day,monyh,year,total_payments。我必须按日期获取记录。问题是我有一天,月,年单独的列,所以我如何获取记录。我不仅通过过滤器获取数据,我还希望所有数据按日期排列。

示例输入:

Day Month   Year    Total_payments
10  01      2008    10
10  01      2008    20
11  02      2008    10
10  03      2010    10

输出:

按日期:

  date       total_payments
-----------------------------
10-01-2008   30
11-02-2008   10
10-03-2010   10

【问题讨论】:

  • 提示:GROUP BY.
  • 没有单独的列
  • 这不是重复的问题。正如我在示例输入和输出中提到的那样,我希望根据日期计算 total_payments 的所有计数。请帮我解决问题
  • @Eric,通过添加 where 子句它不起作用。我有几乎相同的表结构。 SELECT pay_id, CONCAT(pay_year, '-', pay_month, '-01') FROM payment WHERE 1 AND CONCAT(pay_year, '-', pay_month, '-01') >= '2018-04-01' AND CONCAT(pay_year, '-', pay_month, '-31') <= '2018-04-31'

标签: mysql date


【解决方案1】:
SELECT CONCAT(day, '-', month, '-', year) date, SUM(total_payments) total_payments
FROM Subscription_stats
GROUP BY year, month, day
ORDER BY year, month, day

这将首先按年排序,然后按月排序,然后按天排序,并将输出一个包含连接日期的列,并将 total_payments 加在一起。

【讨论】:

  • 埃里克感谢您提供答案,但这并没有给出正确的答案。实际上它只返回一行包含两列。第一列是日期,它是表中的第一条记录日期,第二列是总付款,是表中所有 total_payments 的总和。
  • 就像根据我上面的示例输入一样,它会给一行有两列 (1) 10-01-2008 和第二列 (2) 50
  • 对不起,您必须在 ORDER BY 之前添加 GROUP BY
猜你喜欢
  • 2014-01-31
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多