Счётчик заявок по условию status != 'approved' занижает число
Вы считаете, сколько заявок не было одобрено:
SELECT count(*) FROM applications WHERE status <> 'approved'
В таблице 100000 заявок, одобренных 40000, но запрос вернул 52000, а не 60000. В логах видно, что у части заявок статус ещё не проставлен. Что произошло?
- Строки со status IS NULL не проходят условие, потому что сравнение с NULL не даёт истину
- count(*) не считает строки, в которых есть хотя бы одно NULL-поле
- Оператор <> сравнивает строки побайтово и пропускает значения другого регистра
- База выкинула дубликаты заявок, потому что count(*) работает как count(DISTINCT)
