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

FULD YDRE JOIN for at flette tabeller med PostgreSQL

Inspireret af andre svar, men måske bedre organiseret:

SELECT *, 
       brcht + cana + font + nr AS total 
FROM   (SELECT insee, 
               annee, 
               SUM(Coalesce(brcht.nb, 0)) brcht, 
               SUM(Coalesce(cana.nb, 0))  cana, 
               SUM(Coalesce(font.nb, 0))  font, 
               SUM(Coalesce(nr.nb, 0))    nr 
        FROM   brcht 
               full outer join cana USING (insee, annee) 
               full outer join font USING (insee, annee) 
               full outer join nr USING (insee, annee) 
        GROUP  BY insee, 
                  annee) t 
ORDER  BY insee, 
          annee; 
 

Giver:

insee | annee | brcht | cana | font | nr | total --------+-------+-------+------+------+----+------- 036223 | 2013 | 0 | 0 | 0 | 1 | 1 036223 | 2014 | 0 | 0 | 0 | 1 | 1 036223 | 2017 | 0 | 1 | 0 | 0 | 1 086001 | 2013 | 0 | 0 | 0 | 1 | 1 086001 | 2014 | 0 | 0 | 0 | 2 | 2 086001 | 2015 | 0 | 0 | 0 | 4 | 4 086001 | 2016 | 0 | 2 | 0 | 2 | 4 (7 rows)

  1. Gemmer Oracle efterfølgende nuller for nummerdatatypen?

  2. Sådan fungerer logins på sammenkædede servere (T-SQL-eksempler)

  3. Timegruppering af rækker ved hjælp af Django

  4. Logger du ALLE forespørgsler på en SQL Server 2008 Express-database?