我试图为自己做一个小报告,看看我每天都有多少时间在我的系统中输入。
目标是让我的SQL总结一个特定日期的名称,工作总时间和总NG产品。
按此顺序:
1。)为特定的“日期”整理我的数据。 I.E 2016-06-03
2.。)为'运营商'提供DISTINCT值
3。)SUM()所有时间都在此'日期'注册,并由'运营商'在'total_working_time_h'下注册
4。)SUM()在此'日期'注册的所有no_of_defects以及'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' "
答案 0 :(得分:2)
在不知道表结构或内容的情况下,以下查询只是一个很好的猜测。要注意和使用的位是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
子句或用一系列日期替换它以获得每个操作员每个日期的结果。)
答案 1 :(得分:1)
我不确定你为什么要做DISTINCT。您想知道特定日期的数据,小时数等。
这样做....
Select Date, Operator, 'SumWorkHrs'=sum(total_working_time_h),
'SumDefects'=sum(no_ofDefects) from {$table_work_hours}
Where date='2016-06-03'
答案 2 :(得分:0)
试试这个:
grades.score