MySQL:从表格中选择*到此日期并对列数量求和

时间:2014-02-28 06:22:28

标签: mysql sql

我有这张桌子:

+----+---------------------+---------+---------+
| id | date                | amounta | amountb |
+----+---------------------+---------+---------+
| 1  | 2014-02-28 05:58:41 | 148     | 220     |
+----+---------------------+---------+---------+
| 2  | 2014-01-20 05:58:41 | 50      | 285     |
+----+---------------------+---------+---------+
| 3  | 2014-03-30 05:58:41 | 501     | 582     |
+----+---------------------+---------+---------+
| 4  | 2014-04-30 05:58:41 | 591     | 53      |
+----+---------------------+---------+---------+
| 5  | 2013-05-30 05:58:41 | 29      | 59      |
+----+---------------------+---------+---------+
| 6  | 2014-05-30 05:58:41 | 203     | 502     |
+----+---------------------+---------+---------+

我想将年份= 2014年和最多月份 = 3年(1月,2月,3月)的每一行的所有列相加。

编辑:

我不想每季度选择一次。我想能够在几个月之间进行选择。例如,从1月到4月,或从3月到9月。

我该怎么做?

3 个答案:

答案 0 :(得分:5)

您可以使用日期功能,QUARTER()YEAR()

SELECT 
  SUM(amounta),
  SUM(amountb)
FROM
  t
WHERE
  YEAR(`date`)=2014
  AND
  QUARTER(`date`)=1

这将适合季度查询。但是,对于月份间隔,当然要使用MONTH()

SELECT 
  SUM(amounta),
  SUM(amountb)
FROM
  t
WHERE
  YEAR(`date`)=2014
  AND
  MONTH(`date`)>=1
  AND
  MONTH(`date`)<=8

答案 1 :(得分:0)

试试这个

SELECT SUM(amounta) FROM `your_table`
WHERE date LIKE '2014-01-%' OR date LIKE '2014-02-%' OR date LIKE '2014-03-%'

答案 2 :(得分:0)

试试这个

SELECT 
  SUM(Case when YEAR(`date`)=2014 AND QUARTER(`date`)=1 Then amounta else 0 end),
  SUM(Case when YEAR(`date`)=2014 AND QUARTER(`date`)=1 Then amountb else 0 end)
FROM Table1