/* SELECT track_id, SUM(score)/2 FROM user_track WHERE user_id IN ( SELECT user_id FROM suser WHERE user_name = 'd-kobert' OR user_name = 'thilo' ) GROUP BY track_id HAVING COUNT(track_id) = 2 ORDER BY SUM(score) DESC; */ -- alternative WITH users AS ( SELECT * FROM ( VALUES ('d-kobert'), ('thilo') ) AS _ (user_name) ) --SELECT track_id, SUM(score) / (SELECT COUNT(*) FROM users) AS score SELECT track_id, name, artist FROM track JOIN ( SELECT track_id FROM user_track JOIN suser USING (user_id) JOIN track USING (track_id) WHERE suser.user_name IN (SELECT * FROM users) GROUP BY track_id HAVING COUNT(track_id) = (SELECT COUNT(*) FROM users) ORDER BY SUM(score) DESC ) AS _ USING (track_id) ;