MySQL und CASE WHEN mit einer Reihe von Werten
Ich habe eine Tabelle Konten und Datensätze, die Tabelle Konten, wo mehrere Datensätze. Ich möchte zu brechen das Konto Summen nach der "Anzahl der Datensätze" - Bereich. I. e. Die Aufschlüsselung der
Count of Records | Count
=========================
0-25 | 100
25 - 50 | 122
50 - 100 | 300
Etc.
Bin ich mit der folgenden Abfrage, aber ich kann nicht ankommen es zu der Gruppe von "grp" das ist, was ich will, jede Hilfe auf die beste Art und Weise zu ändern, die Abfrage?
SELECT count(*) as ct,
CASE
WHEN COUNT(*) < 25 THEN '1-25'
WHEN COUNT(*) >= 25 < 50 THEN '25-50'
WHEN COUNT(*) >= 50 < 100 THEN '50-100'
WHEN COUNT(*) >= 100 < 250 THEN '100-250'
WHEN COUNT(*) >= 250 < 500 THEN '250-500'
WHEN COUNT(*) >= 500 < 1000 THEN '500-1000'
ELSE '1000+'
END AS grp
FROM records r,accounts a
WHERE r.account_id=a.id
ORDER BY ct
InformationsquelleAutor der Frage kickdaddy | 2010-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen Sie dies:
Haben Sie zu "definieren", die "buckets" Sie wollen insgesamt die ursprünglichen Datenzeilen in... Das ist, was die Group By-Klausel für... Sie definiert die Kriterien, nach denen jede Zeile in der Basistabelle werden analysiert, um festzustellen, welche "Gruppe" es werden die Daten aggregiert in... Den Ausdruck oder Ausdrücke definiert, die in der group by-Klausel werden die "Definitionen" für die Eimer.
Als query-Prozesse, die die ursprünglichen Daten aus Zeilen, jede Zeile, für die der Wert(s) dieser Ausdruck(s) sind die selben wie eine vorhandene Eimer aggregiert in die Eimer... Jede neue Zeile mit einem Wert nicht vertreten durch einen vorhandenen Eimer wird ein neues bucket erstellt werden...
InformationsquelleAutor der Antwort Charles Bretana
Benötigen Sie eine sub-Abfrage. Wenn dies ist eine Ansicht, die Sie verwenden müssen, zwei Ansichten dann.
InformationsquelleAutor der Antwort Sajjad Tariq