Я пытаюсь сделать несколько подсчетов на лету и надеялся, что кто-нибудь может помочь мне здесь. Есть идеи, как заставить это работать?
То, что я хочу сделать, это выполнить некоторую математику для столбцов, а затем посчитать количество записей, которые соответствуют критериям. Так, например, у меня есть эти данные
REPORT bad_count good_count
------------------------------
Y 30 20
Y 1 100
Я бы хотел увидеть количество записей, где bad_count>> = 20% от общего количества ... (плохо + хорошо), вот так
REPORT stuff
-------------
Y 1
Вот запрос, который я имел в виду, но я получаю сообщение об ошибке.
select REPORT,
count(case round(bad_count / (good_count + bad_count) * 100) when >=20 then 1) as stuff
from $A$
group by REPORT
Этот предложенный ответ снизу работал
SELECT REPORT, COUNT(*)
FROM (SELECT REPORT, ROUND((bad_ct/(good_ct+bad_ct))*100) pct
FROM $A$)
WHERE pct >= 20
GROUP BY REPORT;
но, почему это не работает, когда переписано так?
SELECT REPORT,
count(case pct when >=20 then 1 end) as stuff
FROM (
SELECT REPORT,
ROUND((bad_ct/(good_ct+bad_ct))*100) pct
FROM $A$
)
GROUP BY REPORT
Причина, по которой я предпочитаю делать это таким образом, заключается в том, что я могу посчитать случай, когда есть и другие критерии. Например, я также хочу новый столбец 'good_stuff', который подсчитывает, сколько записей также имеет good_ct, который не является нулевым.