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)
J'ai changé pour des jointures externes complètes afin que vous puissiez vérifier qu'il n'y a pas de succès et/ou d'échecs sans aucune tentative de correspondance. Cela devrait vous permettre de trouver e_id
s où quelque chose ne va pas dans la journalisation. Il devrait être plus facile de commencer à traiter des nombres plus fins et pas seulement des listes de valeurs d'identifiant.
D'autres ont souligné le potentiel de tentatives multiples sur le même identifiant, mais est-il concevable qu'un succès et un échec puissent tous deux être enregistrés de la même manière que dans une sorte de scénario de nouvelle tentative ? Nous ne savons pas à quoi ressemblent les commentaires complets. Comme explication possible, un même commentaire peut-il contenir plus d'un des mots "tentative", "succès", "échec" ?
Voici autre chose à considérer : Êtes-vous sûr que tous vos événements de réussite et d'échec se situeront dans la même fenêtre de dates ? En d'autres termes, y a-t-il un délai après la tentative ? Cela ne devrait pas être très long si cela se produit vers minuit. Vous voudrez peut-être élargir suffisamment les plages de réussite et d'échec pour compenser cela (et passer aux jointures externes gauches.)
Remarque : Condition dans le where
La clause a été modifiée pour permettre plusieurs tentatives (comme indiqué dans les commentaires) et cherche maintenant un équilibre entre le nombre de tentatives par rapport aux succès et aux échecs.