Here is a simplified table ( sqlfiddle ):
id group status
-- ------ -------
1 group1 success
2 group1 fail
3 group1 success
4 group2 success
5 group3 fail
6 group3 success
7 group3 success
8 group3 success
I need to get information about failures for each group of N last lines. How is it (N = 3):
group has_failures
------ ------------
group1 1
group2 0
group3 0
Getting groups is pretty simple:
SELECT a.id, a.group, a.status
FROM log a
INNER JOIN(
select max(i.id) as max_id
from log i
group by i.group
) as b on a.id = b.max_id;
And the errors too:
select count(g.status) > 0 as has_failures
from (
SELECT a.group, a.status
FROM log a
WHERE a.group = 'group3'
ORDER BY id DESC
LIMIT 3
) as g
where g.status = 'fail';
How should these two queries be combined, or maybe a simpler way exists?
source
share