2016-11-23 4 views
1

Lassen Sie uns sagen, ich habe diese Tabelle mit Auftragszeilen:Wie kann man die meistverkauften Produkte in MySQL zählen?

order_lines
- id
- order_id
- product_id
- Menge

Es enthält alle Zeilen pro Bestellung, die ein Quanti enthalten ty x von Produkt y.

Jetzt möchte ich aus diesen Bestellzeilen berechnen, welche Produkte am besten verkauft werden. Ich versuche eine Abfrage zu schreiben, die das effizient macht.

Vielleicht etwas ähnliches? Es ist nur eine Vermutung.

SELECT DISTINCT product_id, COUNT(SUM(quantity)) as q FROM order_lines ORDER BY q DESC 

Irgendwelche Ideen?

+0

Wenn Sie sagen, ‚am besten verkauft‘ meinen Sie die höchste Menge oder Anzahl der Bestellungen? –

+0

Ja, das ist was ich meine :) – Z0q

+3

Das ist keine Ja oder Nein Frage. Meinst du die höchste Menge oder Anzahl der Bestellungen? –

Antwort

3

Obwohl "am besten verkauft" subjektiv ist, werde ich es als das meistverkaufte Produkt für alle gegebenen Aufträge behandeln, In diesem Fall müssen Sie die SUM mit Group By tun und es wird Ihnen die Abfrage geben.

SELECT product_id, SUM(quantity) As MostSold 
FROM order_lines 
Group By product_id 
ORDER BY MostSold DESC 

Und wenn Sie höchsten Auftragsbestand für jedes Produkt, dann können Sie gehen, wie,

SELECT product_id, Count(product_id) As MostSold 
FROM order_lines 
Group By product_id 
ORDER BY MostSold DESC 
+0

Danke, das funktioniert! – Z0q

+0

Ich kombinierte beide Abfragen nach Menge zuerst und nach Anzahl der Bestellungen zweitens. – Z0q

Verwandte Themen