sql >> Databáze >  >> RDS >> PostgreSQL

Agregační pole Postgresql

Použijte 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

Mimochodem, pokud používáte Postgres 9.1, nemusíte opakovat sloupce na SELECT do GROUP BY, např. na GROUP BY nemusíte opakovat jméno studenta. Můžete pouze GROUP BY na primárním klíči. Pokud odeberete primární klíč u studenta, musíte zopakovat jméno studenta na 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. Přidejte znak měny £, $ do určitých polí ORACLE

  2. MySQL:více tabulek nebo jedna tabulka s mnoha sloupci?

  3. Jak získat aktuální datum a čas v MySQL

  4. SQL Server znovu sestavit a reorganizovat index