Ich habe eine SQL-Tabelle der Verkaufsdaten (wie die unten), wie kann ich eine Ergebnismenge generieren, die die Zwischensummen einbezieht und die Ergebnisse idealerweise in absteigender Reihenfolge des höchstbezahlten Kunden sortiert?Zwischensummen und SQL
So eine Tabelle wie die Folgenden angegeben:
CUS_ID | PRODUCT | AMOUNT
12 | A | 2.50
12 | B | 5.80
24 | A | 10.00
24 | B | 30.00
Ich würde folgendes Ergebnis:
CUS_ID | Product | AMOUNT
24 | A | 10.00
24 | B | 30.00
24 | Total | 30.00
12 | A | 2.50
12 | B | 5.00
12 | Total | 7.50
Bisher kann ich mit der folgenden Abfrage kommen:
SELECT cus_id, product, amount FROM Sales
UNION ALL
(SELECT cus_id, 'ZZZZ' AS product, SUM(amount) FROM Sales GROUP BY cus_id)
ORDER BY cus_id, product
Die Abfrage verwendet jedoch "ZZZZ" anstelle von "Total" (was durch Suchen und Ersetzen nachträglich behoben werden kann), tut dies jedoch nicht in der Reihenfolge der Menge sortieren.
BEARBEITEN: Bitte zögern Sie nicht, Antworten zu posten, die sich nicht mit der Sortierung befassen. Einige der Antworten waren mir sehr hilfreich.
Aber warum fügen Sie die "Summe" in dasselbe Ergebnis ein wie die "Umsatz" -Daten? Die Datenbank ist kein Datenpräsentationstool und ein Produkt namens "Total" macht keinen Sinn. Warum nicht zwei getrennte Abfragen haben - eine für die Verkaufsdaten und eine für die Summen? –
@Kirk, ein Client erwartet dieses Format in einem Verkaufsbericht (außer bei vielen Metriken außer Betrag). Während die Formatspezifikation eine harte Anforderung zu sein scheint, wollte ich so viel in SQL arbeiten, bevor ich meinen eigenen Code einbringe – notnoop