Select 和操作 SQL 数据,DISTINCT 和 SUM?

Select and manipulate SQL data, DISTINCT and SUM?

我正在尝试为自己制作一个小报告,以查看每天我在系统中输入了多少时间。

目标是让我的 SQL 总结某一天的姓名、总工作时间和总 NG 产品。

顺序为:

1.) 针对特定 'date' 整理我的数据。即 2016-06-03

2.) 为 'operators'

提供一个 DISTINCT 值

3.) SUM() 一直在这个 'date' 和 'operator' 'total_working_time_h'

下注册

4.) SUM() 所有 no_of_defects 注册在此 'date' 并由此 'operator' 在 'no_of_defects'

日期,运算符,total_working_time_h,no_of_defects

目前我通过使用下面的查询获得了我想要的数据。但是现在我需要运算符的 DISTINCT 值和信息的 SUM。我可以为此使用子查询还是应该通过循环来完成?我可以从中了解更多有关如何解决此问题的其他提示吗?

如果我 运行 DISTINCT 函数,我没有机会按照我尝试的方式对数据求和。

    SELECT date,    operator,   total_working_time_h,   no_of_defects FROM {$table_work_hours} WHERE date = '2016-06-03' "

试试这个:

SELECT SUM(total_working_time) as total_working_time, 
SUM(no_of_defects) as no_of_defects , 
DISTINCT(operator) AS operator FROM {$table_work_hours} WHERE
date = '2016-06-03'

我不确定您为什么要尝试执行 DISTINCT。您想知道特定日期的数据、小时数等。

这样做....

Select Date, Operator, 'SumWorkHrs'=sum(total_working_time_h),
  'SumDefects'=sum(no_ofDefects) from {$table_work_hours} 
       Where date='2016-06-03' 

在不知道 table 结构或内容的情况下,以下查询只是一个很好的猜测。需要注意和使用的位是 sum()GROUP BY。实际上语法会有所不同,具体取决于您使用的 RDBMS。

SELECT
   date
  ,operator
  ,SUM(total_working_time_h)  AS total_working_time_h
  ,SUM(no_of_defects)         AS no_of_defects
 FROM {$table_work_hours}
 WHERE date = '2016-06-03'
 GROUP BY
   date
  ,operator

(删除 WHERE 子句或将其替换为日期范围以获得每个日期每个运算符的结果。)