рассчитать количество проходов и неудач в sql / oracle - PullRequest
1 голос
/ 03 мая 2020

У меня есть таблица базы данных в oracle как,

ID      status  cycle

T051    Passed   s1

T051    Failed   s1

T061    Failed   s1

T061    Failed   s1

T051    Failed   s2

Я хочу вывод, как это

ID   cycle pass   fail

T051   s1   1      0

T061   s1   0      1

T051   s2   0      1

Logi c: -> если соответствующий идентификатор и цикл любой статус передается затем его счетчик пропусков 1, и если соответствующий идентификатор и цикл все состояние не удалось, то счетчик ошибок 1

Кто-нибудь может помочь здесь?

1 Ответ

4 голосов
/ 03 мая 2020

Вы можете использовать функции агрегирования MIN и MAX, чтобы выполнить эквивалент логических логик c для этого запроса, используя MAX, чтобы проверить, является ли любое значение состояния Passed, и MIN, чтобы проверить, является ли какое-либо значение состояния не Failed:

SELECT ID, cycle,
       MAX(CASE WHEN status = 'Passed' THEN 1 ELSE 0 END) AS pass,
       MIN(CASE WHEN status = 'Failed' THEN 1 ELSE 0 END) AS fail
FROM data
GROUP BY ID, cycle
ORDER BY ID, cycle

Выход:

ID      CYCLE   PASS    FAIL
T051    s1      1       0
T051    s2      0       1
T061    s1      0       1

Демонстрация на dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...