Ich habe eine Konten-Tabelle und eine Tabelle Datensätze, wo Konten mehrere Datensätze haben. Ich möchte die Kontosummen nach "Anzahl der Datensätze" aufteilen. I.e. Zeigen Sie den Abbau vonMySQL und CASE WHEN mit einem Bereich von Werten
Count of Records | Count
=========================
0-25 | 100
25 - 50 | 122
50 - 100 | 300
Etc.
ich die folgenden Abfrage verwenden, aber ich kann es nicht durch „grp“ zu einer Gruppe erhalten, die ist, was ich will, jede Hilfe auf dem besten Weg zu Abfrage ändern?
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
ich ERROR 1111 (HY000): Ungültige Verwendung von Gruppenfunktion ich MySQL 5.1 Dank bin mit! – kickdaddy
Entschuldigung, da Sie die Spalten 'r.Account_id' und' a.id' im Hauptteil der SQL-Abfrage verwenden, müssen Sie diese auch in die Gruppierung nach einfügen. Jede Spalte oder jeder Ausdruck verweist auf t9o Im Hauptabschnitt (Voraggregation) der Abfrage, der keine Aggregationsfunktion ist (Summe, Durchschnitt, Min, Max usw.), muss in der Gruppierung nach-Klausel erwähnt werden. –
Ich sehe nicht, wie Sie ein COUNT (*) innerhalb einer GROUP BY-Klausel verwenden können. Ist das überhaupt möglich? –