PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Tablica zagregowana Postgresql

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');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekonwertować liczbę całkowitą na ciąg jako część zapytania PostgreSQL?

  2. [Wideo] Integracja danych z PostgreSQL

  3. Ograniczenie zdefiniowane ODROCZONY POCZĄTKOWO NATYCHMIAST jest nadal ODROCZONY?

  4. python pip zainstalować błąd instalacji psycopg2

  5. SQLAlchemia czy psycopg2?