(Ich erkläre zuerst mein Problem. Die folgende Tabelle (eine Beispielabfrage) ist verfügbar unter Ссылка obwohl)
Ich habe eine Tabelle mit Lagerinformationen wie folgt:
%Vor%Was ich brauche ist:
sp100_id
) returnpct
des Unternehmens mit der höchsten durchschnittlichen Bullishness und speichern Sie es returnpct
, indem Sie die gespeicherte returnpct
s In diesem Beispiel gibt es 5 _date
s, daher müssen folgende Paare aufeinanderfolgender Tage erstellt werden:
2011-03-16
, 2011-03-17
, 2011-03-18
2011-03-17
, 2011-03-18
, 2011-03-21
(bitte beachten Sie, 2011-03-19 ist nicht in der Tabelle) 2011-03-18
, 2011-03-21
, 2011-03-22
Um zu dem zurück zu kommen, was ich brauche:
Problem 1: Im obigen Beispiel gibt meine Abfrage den 1. Tag returnpct
(1.27) anstelle des 3. Tages returnpct
(-0.12) zurück. Wie kann ich das ändern?
Problem 2: Im sqliddle habe ich die erste Gruppe von 3 aufeinanderfolgenden Tagen fest programmiert. Wie kann ich das automatisieren (vielleicht mit PHP), damit ich nicht alle Abfragen manuell eingeben muss? Bitte beachten Sie, dass in der Tabelle Daten fehlen. Wie im Beispiel sollte das Skript das nächste verfügbare Datum in der Tabelle nehmen (also nach 2011-03-18
kommt 2011-03-21
, nicht 2011-03-19
, da es nicht in der Tabelle ist)
Problem 3: Im Beispiel verwende ich 3 aufeinanderfolgende Tage, aber im Idealfall kann ein Skript leicht geändert werden, um eine beliebige andere Anzahl aufeinanderfolgender Tage (2, 4 oder 8) zu nehmen. Folglich sollte der Rückgabewert des 2., 4. oder 8. Tages gespeichert werden.
Wer kann mir bei einigen der Probleme helfen, die ich hier habe? Jede Hilfe wird sehr geschätzt: -)
Die folgende Abfrage führt zu einem großen Teil zu dem, was Sie tun möchten. Es berechnet den 3-Tage-Durchschnitt, dann Bestellungen innerhalb jedes Datums durch den höchsten Durchschnitt:
%Vor%An diesem Punkt wird die Verwendung von mysql mühsam. Dies wäre viel einfacher in einer Datenbank, die analytische / Windows-Funktionen und die "mit" -Anweisung unterstützt (das ist fast jede Datenbank abgesehen von MySQL: Oracle, Postgres, DB2, SQL Server, zum Beispiel).
Sie können (3) in MySQL mit einer einzigen Abfrage tun, aber es ist ein Schmerz. Vielleicht möchten Sie das in der Anwendungsebene tun.
Danke, dass Sie eine SQL Fiddle eingerichtet haben. Für den Grund allein, werde ich die Frage upvote.