Skip to content
Advertisement

Count the sum of a left outer join table

I have two tables which is

Student

ID Name Gender Address
1 Abby Girl street
2 Mark Boy street
3 Lula Girl street
4 Bren boy street

Lessons

ID Lessons_code
3 MK2234
5 22324KL
6 KCS233

and I want to join these tables then get the sum result of the students that didn’t took a lesson then group it by gender like this:

Gender total
Boy 2
girl 1

I know it use sum() and left outer join (?) but I don’t know how to implement it.

Advertisement

Answer

I would suggest not exists:

select s.gender, count(*)
from students s
where not exists (select 1
                  from lessons l
                  where l.id = s.id
                 )
group by s.gender;

You have a very awkward data model. I would expect a column called lessons.id to refer to the primary key of the lessons table. Instead. it seems to refer to a student. A better name would be student_id.

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement