Mysql-запрос для динамического подсчета вхождений строки и преобразования ее в столбцы
Я запрашиваю базу данных mysql для подведения итогов выполнения теста. Мои данные выглядят примерно так.
+-+------------+----------------+
id|test_case_id|execution_status
+-+------------+----------------+
1 | 1 | passed
+-+------------+----------------+
2 | 2 | failed
+-+------------+----------------+
3 | 2 | passed
+-+------------+----------------+
4 | 1 | passed
+-+------------+----------------+
5 | 2 | failed
+-+------------+----------------+
Как мне запросить эти данные, чтобы получить это:
+-+------------+------+------
id|test_case_id|passed|failed
+-+------------+------+------
1 | 1 | 2 | 0
+-+------------+------+------
2 | 2 | 1 | 2
+-+------------+------+------
Наиболее близким, что я мог найти, является этот поток: Mysql-запрос для динамического преобразования строк в столбцы. Однако, поскольку мне нужно суммировать вхождения состояния выполнения, я не могу заставить его работать. Я не могу использовать временную таблицу, динамический SQL или хранимый процесс из-за соображений источника данных и назначения. Любая помощь приветствуется!
1 ответ
Я думаю, что вы можете использовать условную агрегацию. Я не знаю, почему вы не нашли это в своих поисках:
select test_case_id, sum(execution_status = 'passed') as passed,
sum(execution_status = 'failed') as failed
from t
group by test_case_id;