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)
Промених на пълни външни присъединявания, за да можете да проверите дали няма успехи и/или неуспехи без опит за съвпадение. Това трябва да ви позволи да намерите e_id
къде нещо се обърка в регистрирането. Би трябвало да е по-лесно да започнете да работите с по-фини числа, а не само със списъци на id стойности.
Други посочиха потенциала за множество опити за един и същ идентификатор, но възможно ли е успехът и неуспехът да бъдат записани по същия начин, както да кажем в някакъв сценарий за повторен опит? Не знаем как изглеждат пълните коментари. Като възможно обяснение, може ли един коментар да съдържа повече от една от думите „опит“, „успех“, „провал“?
Ето още нещо, което трябва да имате предвид: Сигурни ли сте, че всички ваши успехи и неуспехи ще попаднат в един и същи прозорец от дати? С други думи, има ли известно забавяне след опита? Може да не е много дълго, ако това се случи около полунощ. Може да искате да разширите диапазоните на успех и неуспех достатъчно, за да компенсирате това (и да промените към леви външни съединения.)
Забележка: Условие в where
клаузата е променена, за да позволи множество опити (както е отбелязано в коментарите) и сега просто търси баланс в броя на опитите спрямо успехите и неуспехите.