SELECT
a.e_id,
coalesce(attempts, 0) attempts,
coalesce(successes, 0) successes,
coalesce(failures, 0) failures
FROM
(
SELECT e_id, count(*) as attempts FROM e_table
WHERE e_comment LIKE '%attempt%' AND e_date BETWEEN '23-MAY-2016' AND '26-MAY-2016'
GROUP BY e_id
) a
full outer join
(
SELECT e_id, count(*) as successes FROM e_table
WHERE e_comment LIKE '%success%' AND e_date BETWEEN '23-MAY-2016' AND '26-MAY-2016'
GROUP BY e_id
) s
on s.e_id = a.e_id
full outer join
(
SELECT e_id, count(*) as failures FROM e_table
WHERE e_comment LIKE '%failure%' AND e_date BETWEEN '23-MAY-2016' AND '26-MAY-2016'
GROUP BY e_id
) f
on f.e_id = coalesce(a.e_id, s.e_id)
WHERE
coalesce(attempts, 0) <> coalesce(successes, 0) + coalesce(failures, 0)
Sono passato ai join esterni completi in modo da poter verificare che non ci siano successi e/o errori senza alcun tentativo di corrispondenza. Questo dovrebbe farti trovare e_id
s dove qualcosa non va nella registrazione. Dovrebbe essere più facile iniziare a gestire numeri più fini e non solo elenchi di valori id.
Altri hanno sottolineato il potenziale per più tentativi sullo stesso ID, ma è concepibile che un successo e un fallimento possano essere registrati entrambi allo stesso modo, ad esempio in una sorta di scenario di tentativi? Non sappiamo come siano i commenti completi. Come possibile spiegazione, un singolo commento può contenere più di una delle parole "tentativo", "successo", "fallimento"?
Ecco qualcos'altro da considerare: Sei sicuro che tutti i tuoi eventi di successo e fallimento rientrino nella stessa finestra di data? In altre parole, c'è qualche ritardo dopo il tentativo? Potrebbe non essere necessario molto tempo se ciò accade intorno a mezzanotte. Potresti voler ampliare gli intervalli di successo e fallimento abbastanza per compensare questo (e passare ai join esterni sinistro).
Nota: Condizione nel where
la clausola è stata modificata per consentire più tentativi (come indicato nei commenti) e ora cerca solo un equilibrio nel numero di tentativi rispetto a successi e fallimenti.