Rotverschiebung FULL OUTER JOIN funktioniert nicht, die Ausgabe NULL

Wir haben ein ‚zahlen‘ Tabelle, hält 0-10000 Werte in seine einzelnen Wert ’n‘.
Wir haben tableX hat calculated_at datetime und ein Begriff.
Wir versuchen um die Löcher zu füllen, wo in tableX nicht übereinstimmungen in den angegebenen Terminen. JEDOCH, dies scheint nicht die Rendite NULL oder 0 für das nicht-passende…

select term
     , avg(total::float)
     , date_trunc('day', series.date) as date1
     , date_trunc('day', calculated_at) as date2
from (select 
        (current_timestamp - interval '1 day' * numbers.n)::date as date
      from numbers) as series
full outer join terms
   on series.date = date_trunc('day', calculated_at)
where series.date BETWEEN '2017-07-01' AND '2017-07-30'
AND (term in ('term111') or term is null)
group by term
       , date_trunc('day', series.date)
       , date_trunc('day', calculated_at)
 order by date_trunc('day', series.date) asc
InformationsquelleAutor Himberjack | 2017-07-06



One Reply
  1. 2

    Den full outer join ist in Ordnung. Das problem ist der Filter. Diese sind wirklich schwierig, mit einem full outer join. Ich würde empfehlen:

    select t.term, avg(total::float),
           date_trunc('day', series.date) as date1,
           date_trunc('day', calculated_at) as date2
    from (select (current_timestamp - interval '1 day' * numbers.n)::date as date
          from numbers
          where (current_timestamp - interval '1 day' * numbers.n)::date BETWEEN '2017-07-01' AND '2017-07-30'
         ) series full outer join
         (select t.*
          from terms
          where term = 'term111'
         ) t
         on series.date = date_trunc('day', t.calculated_at)
    group by t.term, date_trunc('day', series.date), date_trunc('day', calculated_at)
     order by date_trunc('day', series.date) asc;

    Meine Vermutung ist aber, dass ein left join würde tun, was Sie wollen. Ich bezweifle, dass ein full outer join ist, was Sie wirklich wollen. Wenn Sie Zweifel haben, Fragen Sie anderen Frage und bieten sample-Daten und die gewünschten Ergebnisse.

    • Perfekt! outer join ergibt FEHLER: konnte nicht ersinnen, einen Abfrageplan für die Abfrage. so wechselte ich als Ihre Empfehlung an die LINKEN

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.