0

假设我有一个如下表:

id | assignment | duedate
1  | Math       | 2012-01-01
2  | History    | 2012-02-02
3  | Science    | 2012-01-01
4  | Government | 2012-02-01
5  | Government | 2013-01-13
6  | History    | 2013-03-13

是否可以进行一些 sql 查询,以便按月和年对所有日期进行分组?是否有可能我可以获得以下排序结果:

duedatemonth  | count 
January 2012  | 2
Feburary 2012 | 2
January 2013  | 1
March 2013    | 1

我知道您可以按到期日期分组,但只能对具有相同月、日和年的那些分组,而不是仅对月和年分组。

那么是否有可能进一步对它进行分组,以便它考虑“分配”以获得结果表

id | duedatemonth  | count 
1  | January 2012  | 2
3  | January 2012  | 2
2  | Feburary 2012 | 2
4  | Feburary 2012 | 2
5  | January 2013  | 1
6  | March 2013    | 1
4

3 回答 3

0

使用字符串函数YEARMONTH.

SELECT YEAR(duedate), MONTH(duedate), COUNT(*)
FROM sparkles
GROUP BY YEAR(duedate), MONTH(duedate)

使用MONTHNAMEDATE_FORMAT获取月份的名称。

于 2013-02-21T22:05:57.057 回答
0

您可以使用此查询。

SELECT DATE_FORMAT(duedate, '%M %Y') duedatemonth, COUNT(1) `count`
FROM Tbl
GROUP BY DATE_FORMAT(duedate, '%M %Y')
于 2013-02-21T22:14:54.980 回答
0

试试这个

    SELECT DATE_FORMAT(duedate,'%M %Y')  duedatemonth, COUNT(*) count
    FROM Table1
   GROUP BY year(duedate), MONTH(duedate)

在这里演示

将输出:

   DUEDATEMONTH     COUNT
   January 2012     2
  February 2012     2
   January 2013     1
     March 2013     1
于 2013-02-21T22:25:22.510 回答