MySQL - 分组2列,1

时间:2017-08-29 13:06:13

标签: mysql

经过几天这个问题,我决定问。

在解释我想要的内容之前,以下是我的数据示例:

id     | date         | solvedate         | groupname
------ | ------------ | ----------------- | -----------------
53489  | 2016-12-01   | 2017-01-01        | Groupe 1
49848  | 2017-01-02   | 2017-01-02        | Groupe 1
46982  | 2017-01-02   | 2017-01-03        | Groupe 1
61680  | 2017-03-15   | 2017-03-15        | Groupe 2
49480  | 2017-03-16   | 2017-04-20        | Groupe 2
69870  | 2017-03-22   | 2017-03-22        | Groupe 2

现在我想计算所有在同月创建的门票。 换句话说,我想计算所有门票,按照集团名称和月份分组。

以下是我想要的内容:

Groupe   | NbrOfTickets      | Month
-------- | ----------------- | -------
Groupe 1 | 2                 | January
Groupe 2 | 2                 | March

以下是我尝试的内容(我知道这不是正确答案):

SELECT tickets.groupename AS Groupe, COUNT(id) AS NbrOfTickets, MONTHNAME(solvedate)
FROM tickets
WHERE solvedate BETWEEN CONCAT(YEAR(CURDATE()), '-01-01') AND CURDATE()
AND date BETWEEN CONCAT(YEAR(CURDATE()), '-01-01') AND CURDATE()
GROUP BY groupname, MONTH(solvedate)

所以我不想按日期分组(因为我会输入我不想要的条目),但只能通过解决,并且只计算与创建月份相同的票数。

有人可以帮我吗? :)

1 个答案:

答案 0 :(得分:0)

如果您只想要在创建月份中解决的那些,您可以简单地添加这样的内容(比较创建年份和月份并解决):

SELECT tickets.groupename AS `Group`,
       MONTHNAME(solvedate) AS `Month`,
       COUNT(id) AS `NoOfTickets`,
FROM tickets
WHERE year(solvedate) = year(date)
    AND month(solvedate) = month(date)
GROUP BY 1,
         2