Użyj array_agg:http://www.sqlfiddle.com/#!1/5099e/1
SELECT s.name, array_agg(g.Mark) as marks
FROM student s
LEFT JOIN Grade g ON g.Student_id = s.Id
GROUP BY s.Id
Przy okazji, jeśli używasz Postgresa 9.1, nie musisz powtarzać kolumn na SELECT to GROUP BY, np. nie musisz powtarzać nazwiska ucznia na GROUP BY. Możesz po prostu GROUP BY na kluczu podstawowym. Jeśli usuniesz klucz podstawowy ucznia, musisz powtórzyć nazwę ucznia w grupie GROUP BY.
CREATE TABLE grade
(Student_id int, Mark varchar(2));
INSERT INTO grade
(Student_id, Mark)
VALUES
(1, 'A'),
(2, 'B'),
(2, 'B+'),
(3, 'C'),
(3, 'A');
CREATE TABLE student
(Id int primary key, Name varchar(5));
INSERT INTO student
(Id, Name)
VALUES
(1, 'John'),
(2, 'David'),
(3, 'Will');