Använd 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
Förresten, om du använder Postgres 9.1 behöver du inte upprepa kolumnerna på SELECT to GROUP BY, t.ex. du behöver inte upprepa elevnamnet på GROUP BY. Du kan bara GRUPPERA EFTER på primärnyckeln. Om du tar bort primärnyckeln på eleven måste du upprepa elevnamnet på 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');