SQL SUMME und Durchschnitt Verkauf von Jahren
Ich habe eine Tabelle, wo die monatlichen Umsätze erfasst werden. Siehe Bild für ein Beispiel der Tabelle.
So dass diese Daten teilweise habe ich Monate 1-12 für jedes Jahr, das seit dem Jahr 2000. Was ich normalerweise tun würde, ist die Abfrage total sales für ein Jahr wie dieses:
SELECT SUM(total_sales) as TotalSalesYear FROM sales_report WHERE year = '2008'
Was ich tun möchte, ist hier bestimmen Sie den höchsten Jahres-Umsatz und der Durchschnittliche Umsatz pro Jahr seit 2000. Also ich muss eine SUMME pro Jahr, und bestimmen, in welchem Jahr der höchste. Dann, sobald ich die SUMME für jedes Jahr, ich kann kommen, mit einem durchschnittlichen Umsatz pro Jahr.
Ich bin nur nicht sicher, wie Sie Sie zur Abfrage dieser.
Danke.
- Sie sollten immer tag Ihres DBMS bei Fragen, SQL Fragen. SQL-Dialekte unterscheiden. Was für ein DBMS nicht unbedingt für andere arbeiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Group by Jahr, um einen Ergebnis-Datensatz pro Jahr. Um es durch den Verkauf Summe absteigend und beschränken Sie Ihre Ergebnisse auf 1 Zeile, so bekommt man das Jahr mit dem höchsten Umsatz Summe.
Zusätzlich verwenden wir die analytische version der
AVG
zu bekommen, der Durchschnitt über alle Summen, die mit jedem Jahr Rekord (von denen wir nur ein bei dem letzten). Entfernen Sie die Letzte Zeile (d.h. das abrufen von nur-Klausel) aus der Abfrage zu sehen, wie es funktioniert.SQL fiddle: http://sqlfiddle.com/#!15/fee30/5
Dies ist standard-SQL, aber nicht in jedem DBMS. Einige DBMS sind mehr standard-konform, andere weniger. Einige verwenden
TOP
oderLIMIT
oder etwas anderes zu bekommen, in der oberen Zeile nur. Und einige don ' T verfügen sogar über analytische Funktionen.year
mityear - case when month <= 6 then 1 else 0 end
in der Abfrage. Einige DBMS sogar, dass Sie Funktionen erstellen, so könnten Sie eine Funktion schreiben, diefiscal_year(year, month)
um diese lesbarer zu gestalten. Oder Sie können eine berechnete Spalte für das Geschäftsjahr in der Tabelle, wenn Ihr DBMS bietet, die.Diese Abfrage liefert die Reihe für jedes Jahr. rnk=1 ist das Jahr mit dem höchsten Umsatz. Sagen rnk=1, erhalten Sie den Gesamt-Umsatz und den durchschnittlichen Umsatz für das Jahr mit dem höchsten Umsatz. Hoffe, das hilft!
Hier ist eine Lösung für den zweiten Teil Ihrer Frage. Dieser berechnet den Durchschnitt der Summe der Umsätze über alle Jahre:
Für immer das Jahr mit dem höchsten Umsatz Sie verlängern könnte dies mit order by und limit wie folgt: