SQLite计数摘要查询

SQLite计数摘要查询,sqlite,count,summary,Sqlite,Count,Summary,我试图得到一个查询,以总结每个员工一周的工作。例如,John Doe一周总共做了12张票,其中4张是“中断/修复”,4张是“增强”,另外4张是未分类的 这就是我到目前为止所做的: 选择(users.first|u name |“”| users.last|u name)作为名称, 将(tickets.id)计数为“已关闭的票数”, 将(tickets.category='Maintenance')计为“维护通知单”, 将(tickets.category='After Hours')计算为'Af

我试图得到一个查询,以总结每个员工一周的工作。例如,John Doe一周总共做了12张票,其中4张是“中断/修复”,4张是“增强”,另外4张是未分类的

这就是我到目前为止所做的:

选择(users.first|u name |“”| users.last|u name)作为名称,
将(tickets.id)计数为“已关闭的票数”,
将(tickets.category='Maintenance')计为“维护通知单”,
将(tickets.category='After Hours')计算为'After Hours tickets',
将(tickets.category='Break Fix')计数为'Break Fix tickets',
将(tickets.category='Enhancement')计数为'Enhancement tickets',
将(tickets.category='')计数为“非分类票据”
来自门票、用户
在票证上。分配给=users.id
其中(tickets.status=‘closed’)和
(票务截止时间:2011-07-16 00:00:00)和

(tickets.closed_at在我看来,您不能在GROUP BY子句中使用别名。您的用户难道没有可以用来区分他们的ID吗

如果要与条件进行比较,则必须使用SUM而不是COUNT

SELECT (users.first_name || ' ' || users.last_name) AS Name,
  COUNT(tickets.id) AS 'Number of Tickets Closed',
  SUM(tickets.category = 'Maintenance') AS 'Maintenance Tickets',
  SUM(tickets.category = 'After Hours') AS 'After Hours Tickets',
  SUM(tickets.category = 'Break Fix') AS 'Break Fix Tickets',
  SUM(tickets.category = 'Enhancement') AS 'Enhancement Tickets',
  SUM(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;
选择(users.first|u name |“”| users.last|u name)作为名称,
将(tickets.id)计数为“已关闭的票数”,
总计(票证类别=‘维修’)为‘维修票证’,
总计(tickets.category='After Hours')为'After Hours tickets',
总和(tickets.category='Break Fix')为'Break Fix tickets',
总和(tickets.category='Enhancement')为'Enhancement tickets',
总计(票证类别=“”)为“非分类票证”
来自门票、用户
在票证上。分配给=users.id
其中(tickets.status=‘closed’)和
(票务截止时间:2011-07-16 00:00:00)和

(tickets.closed_at在我看来,您不能在GROUP BY子句中使用别名。您的用户难道没有可以用来区分他们的ID吗

如果要与条件进行比较,则必须使用SUM而不是COUNT

SELECT (users.first_name || ' ' || users.last_name) AS Name,
  COUNT(tickets.id) AS 'Number of Tickets Closed',
  SUM(tickets.category = 'Maintenance') AS 'Maintenance Tickets',
  SUM(tickets.category = 'After Hours') AS 'After Hours Tickets',
  SUM(tickets.category = 'Break Fix') AS 'Break Fix Tickets',
  SUM(tickets.category = 'Enhancement') AS 'Enhancement Tickets',
  SUM(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;
选择(users.first|u name |“”| users.last|u name)作为名称,
将(tickets.id)计数为“已关闭的票数”,
总计(票证类别=‘维修’)为‘维修票证’,
总计(tickets.category='After Hours')为'After Hours tickets',
总和(tickets.category='Break Fix')为'Break Fix tickets',
总和(tickets.category='Enhancement')为'Enhancement tickets',
总计(票证类别=“”)为“非分类票证”
来自门票、用户
在票证上。分配给=users.id
其中(tickets.status=‘closed’)和
(票务截止时间:2011-07-16 00:00:00)和

(tickets.closed_at您可能需要这样使用COUNT

...
    COUNT(case tickets.category when 'Maintenance' then 1 else null end),
    COUNT(case tickets.category when 'After Hours' then 1 else null end),
...

您可能希望像这样使用COUNT

...
    COUNT(case tickets.category when 'Maintenance' then 1 else null end),
    COUNT(case tickets.category when 'After Hours' then 1 else null end),
...

我发布了一个示例结果。我可以在GROUP BY子句中使用别名,因为它正在工作。你能给我一个后者的示例吗?好的,我这样问是因为它在MySQL上不工作。我编辑了我的帖子。我发布了一个示例结果。我可以在GROUP BY子句中使用别名,因为它正在工作。你能给我一个后者的示例吗?好的,我这样问是因为se它在MySQL上不起作用。我已经编辑了我的帖子。像符咒一样工作!谢谢。像符咒一样工作!谢谢。