经过几天这个问题,我决定问。
在解释我想要的内容之前,以下是我的数据示例:
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)
所以我不想按日期分组(因为我会输入我不想要的条目),但只能通过解决,并且只计算与创建月份相同的票数。
有人可以帮我吗? :)
答案 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