У меня есть рабочий запрос, который группирует данные по модели оборудования и результат, но проблема в том, что существует множество "результатов". Я попытался уменьшить это до "if result = 0, затем сохранить как 0, а затем установить его в 1". Обычно это работает, но в итоге я получаю:
day | name | type | case | count
------------+----------------+------+------+-------
2013-11-06 | modelA | 1 | 0 | 972
2013-11-06 | modelA | 1 | 1 | 42
2013-11-06 | modelA | 1 | 1 | 2
2013-11-06 | modelA | 1 | 1 | 11
2013-11-06 | modelB | 1 | 0 | 456
2013-11-06 | modelB | 1 | 1 | 16
2013-11-06 | modelB | 1 | 1 | 8
2013-11-06 | modelB | 3 | 0 | 21518
2013-11-06 | modelB | 3 | 1 | 5
2013-11-06 | modelB | 3 | 1 | 7
2013-11-06 | modelB | 3 | 1 | 563
Вместо совокупности, которую я пытаюсь достичь, только 1 строка для каждого типа/случая.
day | name | type | case | count
------------+----------------+------+------+-------
2013-11-06 | modelA | 1 | 0 | 972
2013-11-06 | modelA | 1 | 1 | 55
2013-11-06 | modelB | 1 | 0 | 456
2013-11-06 | modelB | 1 | 1 | 24
2013-11-06 | modelB | 3 | 0 | 21518
2013-11-06 | modelB | 3 | 1 | 575
Вот мой запрос:
select CURRENT_DATE-1 AS day, model.name, attempt.type,
CASE WHEN attempt.result = 0 THEN 0 ELSE 1 END,
count(*)
from attempt attempt, prod_hw_id prod_hw_id, model model
where time >= '2013-11-06 00:00:00'
AND time < '2013-11-07 00:00:00'
AND attempt.hard_id = prod_hw_id.hard_id
AND prod_hw_id.model_id = model.model_id
group by model.name, attempt.type, attempt.result
order by model.name, attempt.type, attempt.result;
Любые советы о том, как я могу достичь этого, будут потрясающими.
День всегда будет определяться в предложении WHERE
, поэтому он не будет меняться. name, type, result(case)
и count
будут отличаться. Короче говоря, для любой данной модели я хочу только 1 строку на комбинацию "тип + случай". Как вы можете видеть в первом наборе результатов, у меня есть 3 строки для modelA
, которые имеют type=1
и case=1
(потому что есть много значений "результата", которые я превратил в 0 = 0 и все остальное = 1). Я хочу, чтобы это было представлено как 1 строка с подсчетом, объединенным, как в примере набора данных 2.