2011-11-30 112 views
6

我试图做一个查询来从数据库中获取数据,但我无法完成。设置困难的MySQL查询的困难

我有一个虚拟数据如下表:

id | date 

0 | 2011-11-25 20:12:32 
1 | 2011-11-15 20:12:32 
2 | 2011-11-05 20:12:32 
3 | 2011-10-25 20:12:32 
4 | 2011-10-15 20:12:32 
5 | 2011-10-05 20:12:32 
6 | 2010-10-25 20:12:32 
7 | 2010-04-25 20:12:32 
8 | 2009-07-25 20:12:32 

我想打一个查询:

  • 排序按年日期,然后一个月,然后日
  • 然后它应该计算这些年中每月有多少次。

如果你不明白我的意思: 它应该给一个结果是这样的(使用表中的虚拟数据):


Year | Month | amount (of rows with that month in that year) 

2011 | 11 | 3 
2011 | 10 | 3 
2010 | 4  | 2 
2009 | 7  | 1 

我有一定的了解mySQL,但这对我来说很重要。 :)

在此先感谢

+0

+1用于显示样本数据和所需的输出。我只错过了显示你到目前为止尝试过的部分... –

回答

10
SELECT YEAR(`date`) AS `year`, 
     MONTH(`date`) AS `month`, 
     COUNT(*)  AS amount 
FROM `table` 
GROUP BY YEAR(`date`), 
      MONTH(`date`) 
ORDER BY `date` DESC 
+0

OMG!此代码有效。我看这个代码非常简单。糟糕的是我无法自己建造它。那么,还有很多东西需要学习。 xD谢谢,杰克 – DijkeMark

0

使用此在您的查询:

SELECT count(*) from t GROUP BY YEAR(date), MONTH(date) 
1
SELECT YEAR(date) AS Year, MONTH(date) AS Month, COUNT(*) as amount 
FROM table 
GROUP BY LEFT(date, 7) 
ORDER BY date DESC