sql >> Database >  >> RDS >> PostgreSQL

Postgresql geaggregeerde array

Gebruik 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

Trouwens, als je Postgres 9.1 gebruikt, hoef je de kolommen op SELECTEREN om GROUP BY niet te herhalen, b.v. je hoeft de naam van de student niet te herhalen in GROUP BY. U kunt alleen GROUP BY op de primaire sleutel. Als je de primaire sleutel van de leerling verwijdert, moet je de naam van de leerling herhalen op 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. Verkrijg het verschil tussen twee datums, zowel in maanden als dagen in sql

  2. SQL:haal records gemaakt in tijdbereik voor specifieke datums

  3. Testgegevens genereren in SQL Server

  4. Een databasediagram maken in MySQL Workbench