Diese Frage ist eine erweiterte und vereinfachte Version von diese Frage .
Ich habe versucht, in SQL die folgende iterative Gleichung zu lösen:
U^{F,D}_{t,p} = (\sum_{D} U^{F,D}_{t-1,p} + C_{t-1,p} )*R^{F,D}_{t-1,p}
das ergibt:
Die nächste Analogie, die mir einfällt, ist, dass U^{F,D}_{t,p}
eine Anzahl von Autos der Marke F
bestimmter Farbe ( D
) ist, die ein Autohändler ( p
) zur Zeit% co_de zur Verfügung hat %. Die obige Gleichung besagt also grundsätzlich: Nimm die Einheiten der Fahrzeuge vom Vortag t
(dh t-1
), summiere die Farben ( U^{F,D}_{t-1,p}
), addiere dann zur Summe einen \sum_{D}
Wert vom Vortag ( C
, was auch immer das ist), und multipliziere mit einer anderen Zahl C_{t-1,p}
vom Vortag ( R
, was auch immer das ist).
Ich habe es geschafft, eine vereinfachte Form der obigen Gleichung zu lösen, nämlich:
, d. h. ohne die Summe über Autos Farben ( R^{F,D}_{t-1,p}
). Die Beispieldaten und die SQL-Abfrage sind in der Geige, die ich verlinke , aber ich füge sie hier als Referenz ein gut:
VOLLSTÄNDIGE DATEN:
%Vor%SAMPLE DATEN:
Im Folgenden werden Beispieldaten für den Autohändler D
, Automodell p=1
der Farbe F=BMW
( D=RED
aus der mathematischen Gleichung wird D
in SQL genannt) dargestellt. Die Anfangsbedingung ( DELTA
) ist hier 2015-01-01. Für alle Tage t=0
werden alle Parameter in t
( t
) und R_T, C_T
( t-1
) angegeben. Wenn man sie kennt, besteht die Aufgabe darin, die Einheiten der Autos für alle Tage zu berechnen.% Co_de%.
ABFRAGE:
Um das vereinfachte Problem zu lösen, habe ich die Frage in der verbundenen Geige gestellt, dass ich fügen Sie hier auch als Referenz:
%Vor%Diese Abfrage ergibt für die Beispieldaten, die oben eingefügt wurden, Folgendes:
%Vor% Was gut funktioniert, d.h. für: 2015-01-02, R_T_M1, C_T_M1
, 2015-01-03, t > t=0
.
Die Abfrage ist so geschrieben, dass sie mit verschiedenen Autohändlern und verschiedenen Automarken zusammenarbeitet, die unter die Abfrage in der verbundenen Geige
Die obige Abfrage kann die Summe der Farben der Autos aus der Originalgleichung nicht korrekt verarbeiten:
Dies war in den vereinfachten Daten irrelevant, da alle Autos (BMW und MERCEDES) dort nur in RED vorkommen und somit die Summe über Farben effektiv verschwindet.
Eine solche vollständige Logik sollte wahrscheinlich über einen U_t = (100+0.8)*0.7 = 70.56
-Ausdruck implementiert werden, der in der ursprünglichen Abfrage oben eingebaut ist. Leider weiß ich nicht, wie ich es machen soll.
Stellen Sie sich also vor, Sie hätten Daten in der Form wie im vereinfachten Problemabschnitt, aber jetzt existiert jede Automarke in zwei Farben, zB wie in dieser verbundenen Geige :
%Vor% Angesichts solcher Daten würden Sie erwarten, dass die Dynamik des Händlers U_t = (70.56+0.9)*0.9 = 64.314
GROUP BY/SUM
cars wie folgt aussieht:
Frage ist, wie die obige vereinfachte Abfrage angepasst werden sollte, um dieses Problem zu lösen.
Die Lösung erwies sich als einfacher als ich gedacht hatte (obwohl ich einen Tag damit verbracht habe, alle möglichen Dinge auszuprobieren, und jetzt scheint alles trivial zu sein).
Die Abfrage (getestet) auf den ursprünglichen Geigendaten lautet:
%Vor%Dies ist eine minimale Änderung der ursprünglichen Abfrage (nur eine Zeile der ursprünglichen Abfrage betroffen) und ORACLE analytische Funktion verwendet.
Ich denke nicht, dass dies die beste Antwort ist, aber ich denke, es gibt Ihnen das Ergebnis, das Sie suchen.
%Vor% Was ich hinzugefügt habe, ist zwischen Start SUM of u_t
und End SUM of u_t
comments und hier ist die Geige .
Diese Frage ist eine erweiterte und vereinfachte Version von diese Frage .
Ich habe versucht, in SQL die folgende iterative Gleichung zu lösen:
%code%
das ergibt:
Die nächste Analogie, die mir einfällt, ist, dass %code% eine Anzahl von Autos der Marke %code% bestimmter Farbe ( %code% ) ist, die ein Autohändler ( %code% ) zur Zeit% co_de zur Verfügung hat %. Die obige Gleichung besagt also grundsätzlich: Nimm die Einheiten der Fahrzeuge vom Vortag %code% (dh %code% ), summiere die Farben ( %code% ), addiere dann zur Summe einen %code% Wert vom Vortag ( %code% , was auch immer das ist), und multipliziere mit einer anderen Zahl %code% vom Vortag ( %code% , was auch immer das ist).
Ich habe es geschafft, eine vereinfachte Form der obigen Gleichung zu lösen, nämlich:
, d. h. ohne die Summe über Autos Farben ( %code% ). Die Beispieldaten und die SQL-Abfrage sind in der Geige, die ich verlinke , aber ich füge sie hier als Referenz ein gut:
VOLLSTÄNDIGE DATEN:
%Vor%SAMPLE DATEN:
Im Folgenden werden Beispieldaten für den Autohändler %code% , Automodell %code% der Farbe %code% ( %code% aus der mathematischen Gleichung wird %code% in SQL genannt) dargestellt. Die Anfangsbedingung ( %code% ) ist hier 2015-01-01. Für alle Tage %code% werden alle Parameter in %code% ( %code% ) und %code% ( %code% ) angegeben. Wenn man sie kennt, besteht die Aufgabe darin, die Einheiten der Autos für alle Tage zu berechnen.% Co_de%.
%Vor%ABFRAGE:
Um das vereinfachte Problem zu lösen, habe ich die Frage in der verbundenen Geige gestellt, dass ich fügen Sie hier auch als Referenz:
%Vor%Diese Abfrage ergibt für die Beispieldaten, die oben eingefügt wurden, Folgendes:
%Vor%Was gut funktioniert, d.h. für: 2015-01-02, %code% , 2015-01-03, %code% .
Die Abfrage ist so geschrieben, dass sie mit verschiedenen Autohändlern und verschiedenen Automarken zusammenarbeitet, die unter die Abfrage in der verbundenen Geige
Die obige Abfrage kann die Summe der Farben der Autos aus der Originalgleichung nicht korrekt verarbeiten:
Dies war in den vereinfachten Daten irrelevant, da alle Autos (BMW und MERCEDES) dort nur in RED vorkommen und somit die Summe über Farben effektiv verschwindet.
Eine solche vollständige Logik sollte wahrscheinlich über einen %code% -Ausdruck implementiert werden, der in der ursprünglichen Abfrage oben eingebaut ist. Leider weiß ich nicht, wie ich es machen soll.
Stellen Sie sich also vor, Sie hätten Daten in der Form wie im vereinfachten Problemabschnitt, aber jetzt existiert jede Automarke in zwei Farben, zB wie in dieser verbundenen Geige :
%Vor%Angesichts solcher Daten würden Sie erwarten, dass die Dynamik des Händlers %code% %code% cars wie folgt aussieht:
%Vor%Frage ist, wie die obige vereinfachte Abfrage angepasst werden sollte, um dieses Problem zu lösen.
Die Lösung erwies sich als einfacher als ich gedacht hatte (obwohl ich einen Tag damit verbracht habe, alle möglichen Dinge auszuprobieren, und jetzt scheint alles trivial zu sein).
Die Abfrage (getestet) auf den ursprünglichen Geigendaten lautet:
%Vor%Dies ist eine minimale Änderung der ursprünglichen Abfrage (nur eine Zeile der ursprünglichen Abfrage betroffen) und ORACLE analytische Funktion verwendet.