2017-07-10 3 views
1

Lassen Sie mich Ihnen ein Beispiel aus meiner Frage erzählen.
Zum Beispiel haben wir eine Tabelle namens (order), die alle Bestellungen einfügen und zu dieser Tabelle kaufen.Mysql erstellen Sie eine Zeile mit dem Namen Rank

Tabelle A (Aufträge):

+--------------------------+ 
| CustomerKey | ProductKey | 
+--------------------------+ 
| 306545  | pro1  | 
| 597864  | pro3  | 
| 784678  | pro2  | 
| 905479  | pro3  | 
| 306545  | pro1  | 
| 348965  | pro3  | 
| 784678  | pro3  | 
+--------------------------+ 

Jetzt möchte ich bestellen möchten und unsere Bestselling Produkte

Abfrage Ausgabe:

+-------------------------------+ 
| id | ProductKey | numberSold | 
+-------------------------------+ 
| 1 | pro3  | 4   | 
| 2 | pro1  | 2   | 
| 3 | pro2  | 1   | 
+-------------------------------+  



Ich schrieb ich für diese Abfrage :

select ProductKey, count(1) as numberSold from A group by ProductKey order by count(1) desc 

aber es ist nicht vollständig! diese Abfrage Notwendigkeit einer Reihe namens Rang (unter der unten genannten Abfrageausgabe Schauen):

+-------------------------------------+ 
| id | ProductKey | numberSold | rank | 
+-------------------------------------| 
| 1 | pro3  | 4   | 1 | 
| 2 | pro1  | 2   | 2 | 
| 3 | pro2  | 1   | 3 | 
+------------------------------+------+ 
+1

Sie möchten eine _column_, nicht ein _row_. – arkascha

+0

Es wird von Ihnen erwartet, dass Sie versuchen, ** den Code selbst zu schreiben **. Nach [** mehr Forschung **] (https://meta.stackoverflow.com/q/261592/1011527) Wenn Sie ein Problem haben ** posten Sie, was Sie versucht haben ** mit einer ** klaren Erklärung von was funktioniert nicht ** und bietet [ein minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). Lesen Sie [Wie Sie fragen] (http://stackoverflow.com/help/how-to-ask) eine gute Frage. Achten Sie darauf, [die Tour zu besuchen] (http://stackoverflow.com/tour) und lesen [this] (https://meta.stackoverflow.com/q/347937/1011527). –

Antwort

0

Wahrscheinlich ist es das, was Sie suchen,:

SET @rank=0; 
SELECT 
    ProductKey, 
    count(1) AS numberSold, 
    @rank:[email protected]+1 AS rank 
    FROM A 
    GROUP BY ProductKey ORDER BY numberSold DESC 
0

oder ... wenn Sie die einzelnen Abfrage bevorzugen Ansatz ...

SELECT a.* 
    , @rank:[email protected]+1 rank 
    FROM 
    (SELECT ProductKey 
      , COUNT(1) numberSold 
     FROM my_table 
     GROUP 
      BY ProductKey 
    ) a 
    , (SELECT @rank:=0) vars 
ORDER 
    BY numberSold DESC; 
Verwandte Themen