folgende ist meine Tabelle und Beispieldatenselbst verbindet mit Aggregatfunktion
user_id | session_id | time_stamp | source | medium | new_source | new_medium
1 | 1 | 2017-01-01 | google | search
1 | 2 | 2017-01-02 | google | search
1 | 3 | 2017-01-03 | direct | none
2 | 1 | 2017-03-11 | google | search
2 | 2 | 2017-04-21 | direct | none
2 | 3 | 2017-04-22 | google | search
Ich mag die neue Quelle und neue Medium Spalte für jeden Benutzer aktualisieren, wenn es Bedingungen erfüllt `, wenn der Benutzer eine direkte Quelle für die letzten | max Zeitstempel. Die neue Quelle und der neue Medienwert müssen die letzte nicht direkte Quelle & sein. Nachfolgend Ergebnis erwartet
user_id | session_id | time_stamp | source | medium | new_source | new_medium
1 | 1 | 2017-01-01 | google | search
1 | 2 | 2017-01-02 | google | search
1 | 3 | 2017-01-03 | direct | none |google | search
2 | 1 | 2017-03-11 | google | search
2 | 2 | 2017-04-21 | direct | none
2 | 3 | 2017-04-22 | google | search
Die Abfrage Ich habe versucht (funktioniert nicht)
SELECT a.domain_userid,
a.session_id,
a.source,
a.medium,
b.source AS new_source,
b.medium AS new_medium
FROM table a
LEFT JOIN table b ON a.domain_userid = b.domain_userid
LEFT JOIN (SELECT domain_userid,
MAX(time_stamp) as time_stamp
FROM table
WHERE source != 'direct'
GROUP BY domain_userid) AS c ON b.time_stamp = c.time_stamp and
c.user_id=b.user_id
WHERE a.source = 'direct'
Jede Hilfe wird geschätzt.
Hinweis: Um den gleichen Tisch sitzt und direkt den letzten Wert none nehmen
Partitionierung zweimal nicht teuer ist? –
@ pramodniralakeri. . . Verglichen mit was? –
im Vergleich zu Self Join mit Aggregat oder so ähnlich? korrigiere mich, wenn ich falsch denke/rede –