2017-07-06 5 views
1

Wir haben eine 'Zahlentabelle', die 0-10000 Werte in ihrem einzelnen Wert 'n' enthält. Wir haben TableX, die berechnete_datumszeit und einen Begriff hat. Wir versuchen, die Lücken zu füllen, wo in TableX keine Übereinstimmungen in den angegebenen Daten vorhanden sind. Allerdings scheint dies nicht NULL oder 0 für die nicht passenden ...Redshift FULL OUTER JOIN gibt NULL nicht aus

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 

Antwort

2

Die full outer join ist in Ordnung zu erhalten. Das Problem sind die 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 tun würde, was Sie wollen. Ich bezweifle, dass ein full outer join ist, was Sie wirklich vorhaben. Wenn Sie Zweifel haben, fragen Sie eine andere Frage und liefern Beispieldaten und gewünschte Ergebnisse.

+0

Perfekt! Outer Join ergibt ERROR: konnte für die angegebene Abfrage keinen Abfrageplan erstellen. also habe ich als deine Empfehlung nach LINKS gewechselt – Himberjack

Verwandte Themen