PostgreSQL - kolejność według tablicy

Mam 2 stoły - kurs, który zawiera identyfikator i nazwę kursów oraz kurs tagów, który zawiera tagi dla każdego kursu.

course                    tagcourse
------------            ----------------
PK id_course            PK tag
   name                 PK, FK id_course

Chciałbym napisać funkcję, która przeszukuje kursy według podanej tablicy tagów i zwraca je uporządkowane według ilości pasujących znaczników. Nie wiem jednak, jak napisać to poprawnie i efektywnie. Proszę pomóż mi.

to znaczy.

CREATE OR REPLACE FUNCTION searchByTags(tags varchar[])
RETURNS SETOF.....
  RETURN QUERY SELECT * FROM course c INNER JOIN tagcourse tc ON c.id_course = tc.id_course
  WHERE ???  ORDER BY ???

END....

questionAnswers(2)

yourAnswerToTheQuestion