Я хотел бы получить количество строк с определенными критериями, а затем сравнить числа в одном запросе. Как я могу это сделать?
Мне нужно получить список устройств, для которых начальный столбец в порядке, а проверенный столбец не выполнен. Я не уверен, как выполнить цикл через всю таблицу, чтобы выполнить эти вычисления.
SELECT type,device,
(SELECT (COUNT(*) WHERE Started = "OK" from table1) AS t1,
(SELECT (COUNT(*) WHERE tested = "FAILED" from table1) AS t1
from table1
where remediated = "Remediated"
GROUP BY type,device
HAVING (SELECT (COUNT(*) WHERE Started = "OK" from table1) = (SELECT (COUNT(*) WHERE tested = "FAILED" from table1)
Использовать условную агрегацию:
Это не делает то, что делает ваш запрос, потому что он фильтрует на
remediated
для подсчетов, а также строк. Однако я подозреваю, что это то, что вы intend .Примечание. Не все базы данных поддерживают псевдонимы таблиц в
HAVING
. Вы можете просто повторить выражения, если это необходимо: