2016-12-27 3 views
-2

Ich habe eine Tabelle PAYTB mit Transaktionsinformationen. Die Tabelle enthält ACAUREQ_AUREQ_ENV_M_CMONNM, den gemeinsamen Händler-Namen.Reihenfolge nach Häufigkeit in SQL

Jetzt möchte ich eine Ausgabe wie folgt aus:

orders   ACAUREQ_AUREQ_ENV_M_CMONNM  
---------+---------+---------------- 
100    Antique Shop  
30    Airleisure  
23    Books 
12    ....   

Wie kann ich die „Aufträge“ -Spalte konstruieren, die die Anzahl aller Transaktionen mit einem bestimmten gemeinsamen Händlernamen ist?

+3

Nichts in Google über COUNTing Vorkommen eines Wertes? – dfundako

Antwort

1

Sie gruppieren müssen auf ACAUREQ_AUREQ_ENV_M_CMONNM und Anzahl der Zeilen für jeden zu finden, dann, um von dieser Zählung in absteigender Reihenfolge.

SELECT COUNT(*) orders, 
    ACAUREQ_AUREQ_ENV_M_CMONNM 
FROM PAYTB 
GROUP BY ACAUREQ_AUREQ_ENV_M_CMONNM 
ORDER BY orders desc; 
+0

Bestellung funktioniert nicht auf Builded Spalte – Esperento57

+0

@ Esperento57 Es tut. Versuchen Sie es – GurV

+1

@ Esperento57 die Reihenfolge von Klausel wird im allerletzten verarbeitet, so dass die Datenbank-Engine es zu diesem Zeitpunkt bewusst ist. Sie können jedoch keinen Alias ​​in der hazing-Klausel verwenden, wie sie vor dem 'select'-Befehl verarbeitet wurde. – GurV

0

möchten Sie durch eine Gruppe verwenden:

select count(*) as orders, ACAUREQ_AUREQ_ENV_M_CMONNM 
     from PAYTB 
     group by ACAUREQ_AUREQ_ENV_M_CMONNM; 
+0

fügen Sie einfach Auftrag von;) – Esperento57

1
SELECT count(*) as orders , ACAUREQ_AUREQ_ENV_M_CMONNM 
FROM PAYTB 
GROUP BY ACAUREQ_AUREQ_ENV_M_CMONNM 
ORDER BY 1 desc; 
0

Sortieren nach count (*) ab zu zeigen, zählt in einer Gruppe durch den Ausdruck absteigend.

SELECT count(*) as orders , ACAUREQ_AUREQ_ENV_M_CMONNM 
FROM PAYTB 
GROUP BY ACAUREQ_AUREQ_ENV_M_CMONNM 
ORDER BY count(*) desc; 
Verwandte Themen