sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgresql aggregeret array

Brug 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

I øvrigt, hvis du bruger Postgres 9.1, behøver du ikke gentage kolonnerne på SELECT to GROUP BY, f.eks. du behøver ikke at gentage elevens navn på GROUP BY. Du kan kun GRUPPE EFTER på primær nøgle. Hvis du fjerner den primære nøgle på elev, skal du gentage elevens navn 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');


  1. Bootstrapping SQL Express fra WiX?

  2. Importer data fra Excel-regneark eller CVS til MySQL

  3. hvordan man konverterer en strengdato til datoformat i oracle10g

  4. Hvordan man beregner procent med en SQL-sætning