【问题标题】:MySQL to get the count of rows for each worker with specific dates and jobsMySQL获取具有特定日期和工作的每个工人的行数
【发布时间】:2011-07-22 19:30:49
【问题描述】:

我有一个工人数据库及其分配的工作项目。我想使用 MySQL 创建一个报告,该报告将显示每个工作人员在特定工作和特定日期范围内拥有多少工作项的计数。结果数据如下所示:

今天 明天 明年 工人 |工作1 工作2 工作3 |工作1 工作2 工作3 |工作1 工作2 工作3 鲍勃 | 4 0 1 | 1 2 0 | 5 10 3

我有一个包含以下相关字段的表:工人、日期、工作类型、工作项

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

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

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

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

【问题讨论】:

  • 这很可能,但要获得更多答案,我们需要知道表格布局或架构。
  • 您的问题并不完全清楚。你想要每个工人的计数吗?表中的关系不清楚。请指定表定义。
  • 我添加了更多信息。
  • 这是可能的,但这将是一个非常丑陋的查询,您必须多次加入同一个表。有固定数量的工作类型吗?
  • 是的!只有四种工作类型。

标签: mysql


【解决方案1】:

每天的概述:

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 列联表来生成您想要的输出。

【讨论】:

  • 谢谢,这很有帮助。我现在离我很近了。我在 VB.NET 应用程序中编写这个,但我可能能够导出到 Excel,或集成 Excel。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多