我正在尝试查询来总结每个员工一周的工作。例如,John Doe 一周总共做了 12 张票,其中 4 张是 Break/Fixes,4 张是 Enhancement,另外 4 张是未分类的。
这是我到目前为止:
SELECT (users.first_name || ' ' || users.last_name) AS Name,
COUNT(tickets.id) AS 'Number of Tickets Closed',
COUNT(tickets.category = 'Maintenance') AS 'Maintenance Tickets',
COUNT(tickets.category = 'After Hours') AS 'After Hours Tickets',
COUNT(tickets.category = 'Break Fix') AS 'Break Fix Tickets',
COUNT(tickets.category = 'Enhancement') AS 'Enhancement Tickets',
COUNT(tickets.category = '') AS 'Non Categorized Tickets'
FROM tickets, users
ON tickets.assigned_to=users.id
WHERE (tickets.status = 'closed') AND
(tickets.closed_at >= '2011-07-16 00:00:00') AND
(tickets.closed_at <= '2011-07-22 23:59:59')
GROUP BY Name;
Run Code Online (Sandbox Code Playgroud)
这是一个示例结果:
约翰·杜 1 10 10 10 10 10 10
约翰·杜 2 2 2 2 2 2
约翰·杜 3 25 24 24 24 24 24
约翰·杜 4 2 2 2 2 2 2
约翰·杜 5 12 10 10 10 10 10
约翰·多伊6 7 7 7 7 7 7
这个查询并不像我预期的那样工作,因为所有列的总数都相同(关闭的票总数,以下列似乎只包含分类的。)帮助?
编辑
只是想发布功能代码:
SELECT (users.first_name || ' ' || users.last_name) AS Name,
COUNT(tickets.id) AS 'Number of Tickets Closed',
COUNT(case tickets.category when 'Maintenance' then 1 else null end) AS 'Maintenance Tickets',
COUNT(case tickets.category when 'After Hours' then 1 else null end) AS 'After Hours Tickets',
COUNT(case tickets.category when 'Break Fix' then 1 else null end) AS 'Break Fix Tickets',
COUNT(case tickets.category when 'Enhancement' then 1 else null end) AS 'Enhancement Tickets',
COUNT(case tickets.category when '' then 1 else null end) AS 'Non Categorized Tickets'
FROM tickets, users
ON tickets.assigned_to=users.id
WHERE (tickets.status = 'closed') AND
(tickets.closed_at >= '2011-07-16') AND
(tickets.closed_at <= '2011-07-22')
GROUP BY Name;
Run Code Online (Sandbox Code Playgroud)
你可能想像这样使用 COUNT
...
COUNT(case tickets.category when 'Maintenance' then 1 else null end),
COUNT(case tickets.category when 'After Hours' then 1 else null end),
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3112 次 |
| 最近记录: |