--finding most frequent occupation for each education level group SELECT educationlevel, educationnumeric, occupation, count(*) FROM person P GROUP BY educationlevel,educationnumeric, occupation HAVING COUNT(*)=(SELECT MAX(cnt) FROM (SELECT educationlevel, occupation, count(*) as cnt FROM person GROUP BY occupation, educationlevel) count_table WHERE P.educationlevel = count_table.educationlevel) ORDER BY 2;