MySQL用于获取具有特定日期和作业的每个工作人员的行数

时间:2011-07-22 19:30:49

标签: mysql

我有一个工人及其分配的工作项数据库。我想使用MySQL创建一个报告,该报告将显示某些工作下的工作项数以及每个工作人员在某些日期范围内的数量。结果数据如下所示:

           Today          Tomorrow        Next Year
Worker | Job1 Job2 Job3 | Job1 Job2 Job3 | Job1 Job2 Job3

Bob    |  4    0   1    | 1    2    0    | 5    10   3

我有一个包含以下相关字段的表:worker,date,jobtype,workitem

每个工作人员都有同名的多个条目,因此Bob会为他分配多个工作项,如下所示:

Bob | 07/27/2011 | sandblasting | workitem001
Bob | 08/30/2011 | mowing | workitem001
Bob | 08/30/2011 | driving | workitem002

可以将工作项分配给多个工作类型。

我用多个查询编写了一些令人困惑的循环,但理想情况下我想编写一个复杂的查询来完成此任务。这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

每一天的概述:

select worker, date, job, count(*) as count
from workitems
group by worker, date, job

月/年概述:

select worker, month(date) as month, job, count(*) as count
from workitems
group by worker, month, job

就是这样。表格格式稍有不同,因为在mysql中你不能把值作为列(你的例子中的job1,job2,job3),因为它可以用例如MS Access'交叉查询。但是您可以使用上述查询从mysql导出数据,然后例如使用MS Excel列联表来生成所需的输出。