2016-03-19 7 views
0

Ich weiß nicht, warum, wenn ich TOTAL in GROUP BY schreiben und SQL sendet mir Fehler .. Bezeichner ungültig.SQL: So verwenden Sie die Summe in der Gruppe von

Ich weiß nicht, wie kann ich das auflösen.

Danke.

+0

Warum versuchen Sie, die Summe in der Gruppe nach Liste zu verwenden? Das macht keinen Sinn, da die Summe in den Zeilen der Gruppe liegt. Warum verschachteln Sie auch Aggregate? Zeigen Sie Beispielquelldaten und gewünschte Ergebnisse an. –

+0

Vielleicht könnten Sie einige Beispieldaten und was Sie als Ergebnis davon haben möchten, da die Abfrage viele Probleme hat ... – trincot

+0

Und schließlich, welche RDMS Sie als Antworten verwenden werden maßgeschneiderte SQL-Dialekt. – Parfait

Antwort

0

Die Spalte "TOTAL" ist ein Alias ​​für SUM (COUNT (‘ X ') * Preis). Es kann nicht als Spaltenbezeichner in der GROUP BY-Klausel verwendet werden. Sie müssen GROUP BY SUM (COUNT ('X') * price) angeben, weil "TOTAL" zum Zeitpunkt der Gruppierung unbekannt ist/keine Spalte. Nach der Verwendung von GROUPING können Sie in einer HAVING-Klausel auf "TOTAL" verweisen. In jedem Fall erlaubt die Version/Art von SQL, die Sie verwenden, es nicht.

Zusätzlich, warum zählen Sie "X"? Dieses X ist ein fester Wert und hängt nicht von einer Ihrer Spalten ab. Wenn Sie jede Zeile zählen möchten, verwenden Sie einfach Count (1) oder Count (*). Außerdem müssen Sie keinen COUNT SUMMEN. Ein COUNT ist bereits summiert.

Sie sollten die Struktur von REP und KOSTEN buchen. Ihr verknüpftes Bild verfügt nicht über genügend Informationen, um die von Ihnen geschriebene Abfrage zu unterstützen.

select 
    idteam, 
    -- job, /* not selected since it would need to be grouped*/ 
    sum(price) as 'theSUM' 
from REP 
join COSTS 
    on REP.categ = COSTS.job 
    and COSTS.year = 2016 
group by idteam 
order by idteam 
+0

Danke !!! Das habe ich gebraucht. Graf verwirrt mich .. haha – Dan

0

Entschuldigung für meine schlechte Erklärung.

Preis und Job sind verwandt. Zum Beispiel, Job 1 haben Preis 30, Job 2 Preis 56 usw.

Ich möchte den Gesamtpreis für jedes Idteam erhalten.

Zum Beispiel:

ich eine andere Tabelle verwenden, mit JOIN, weil der Preis in anderen Tabelle sind die Job enthält (maxi) enter image description here