Выберите и манипулируйте данными SQL, DISTINCT и SUM?
Я пытаюсь сделать небольшой отчет для себя, чтобы увидеть, сколько времени я уделяю своей системе каждый день.
Цель состоит в том, чтобы мой SQL суммировал имя, общее время работы и продукт Total NG за один конкретный день.
В этом порядке:
1.) Сортировка моих данных на определенную "дату". IE 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 оператора, и сумма информации. Могу ли я использовать подзапросы для этого или это должно быть выполнено циклом? Любые другие советы, где я могу узнать больше о том, как решить эту проблему?
Если я запускаю функцию DISTINCT, я не получаю возможность суммировать свои данные так, как я пытаюсь.
SELECT date, operator, total_working_time_h, no_of_defects FROM {$table_work_hours} WHERE date = '2016-06-03' "
3 ответа
Не зная структуры или содержимого таблицы, следующий запрос является только хорошим предположением. Биты, на которые стоит обратить внимание и работать sum()
а также GROUP BY
, На самом деле синтаксис будет немного отличаться в зависимости от того, какую СУБД вы используете.
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
укажите или замените его диапазоном дат, чтобы получить результаты по каждому оператору за дату.)
Я не уверен, почему вы пытаетесь сделать DISTINCT. Вы хотите знать данные, количество часов и т. Д. Для конкретной даты.
сделай это....
Select Date, Operator, 'SumWorkHrs'=sum(total_working_time_h),
'SumDefects'=sum(no_ofDefects) 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'