2016-05-21 9 views
0

Benötigen Sie Hilfe bei einer komplizierten SQL-Abfrage.SQL-Abfrage, um die größten Preissenkungen zu erhalten

Wir haben die Tabelle Preisänderungen mit den Spalten id, productid, Datum, Preis

Für jeden productid, gibt es eine Reihe von Zeilen mit Datum = ein Zeitstempel und Preis = der Preis zum Zeitpunkt des Zeitstempels.

So:

productid, date, price 
3, 17/5-2016 22:00:00, 100 
3, 18/5-2016 22:00:00, 120 
3, 19/5-2016 22:00:00, 140 
3, 20/5-2016 22:00:00, 120 
3, 21/5-2016 22:00:00, 140 

Ich mag würde die 10 Produkte mit dem größten Preisrückgang in den letzten 7 Tagen.

Ist das irgendwie möglich?

Danke!

PS: Es ist eine MySQL-Datenbank.

+0

Haben Sie eine SQL Geige des Systems so weit? – davidhood2

+1

Was meinen Sie mit ** Preissenkung **? Ist der Preis gesunken, wenn 'Preis (vor 7 Tagen) - Preis (jetzt())'> 0? Wenn vor 7 Tagen der Preis 100 ist, ist vor 3 Tagen 200, gestern ist 50, jetzt ist 80 dann ** Preissenkung =? ** –

+0

Sie möchten den Preis für das Produkt vor 7 Tagen finden und Differenz mit dem aktuellen Preis berechnen? Was ist, wenn der Produktpreis vor 5 Tagen gestiegen und vor 2 Tagen gesunken ist? Welchen Unterschied willst du in diesem Fall? – Andrew

Antwort

0

Wenn ich die Logik und dann Tabellen rechts die versuchen Sie Folgendes:

select d.productID from 
( 
select a.productid, (a.price-b.price) as priceDiff 
from products a 
inner join products b 
on a.productID=b.productID 
and Date(a.date)=Date(b.date)+7 
) d 
order by priceDiff 
Limit 10 
+0

Danke, aber es verursacht einen Syntaxfehler: Fehlercode: 1064 Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das zu Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe 'Tabelle Produkte a inneren verbinden Produkte b auf a.productID = b.ProductID und Datum (' at line 4 – Louisa

+0

Ich habe natürlich ersetzen die "Produkte" mit den echten Tabellennamen, bevor Sie Ihre Abfrage versuchen. – Louisa

+0

Nice.Thanks viel. – Louisa

Verwandte Themen