2009-08-13 20 views
2
arbeiten

Lassen Sie uns sagen, dass wir diese Tabelle haben:MySQL SUM, wenn GROUP mit BY nicht

Symbol | Size 
A  | 12 
B  | 5 
A  | 3 
A  | 6 
B  | 8 

Und wir wollen eine Ansicht wie folgt aus:

Symbol | Size 
A  | 21 
B  | 13 

So verwenden wir diese:

Select Symbol, sum(Size) from table group by Symbol order by Symbol ASC 

Aber stattdessen bekommen wir das:

Was mache ich falsch ?!

+0

Sind das die richtigen Spalten? wieder in deinem Test verwenden? Wenn ja, was sind ihre Datentypen? – VoteyDisciple

+0

dies ist der richtige Weg, es zu tun. – northpole

+0

Können Sie den Tisch DESC? –

Antwort

0

Ich fand heraus, dass irgendwo in den Select Befehle, die anstelle eines left join auf die Un-SUMable Tisch verbleit es eine einfache join war. Obwohl ich immer noch nicht verstehe, warum das die Rechnung durcheinander bringen sollte, habe ich das geändert und jetzt funktioniert es ... Es tut mir leid, dass ich das Ganze nicht hochladen konnte ...

+0

Bitte geben Sie die Abfrage. Ich habe das gleiche Problem.Ich könnte Lösung gefunden haben, wenn Sie eine Abfrage stellen, aber es könnte anderen helfen –

+0

Es ist fast 8 Jahre her, aber wenn ich mich richtig erinnere, machte ich eine 'Summe' an zwei verbundenen Tabellen und änderte die' Join' zu einer ' links beitreten 'repariert es. Ich würde vorschlagen, dass Sie dem Vorschlag von Roe Adler folgen, um zu sehen, ob alles andere in Ordnung ist. – Ant

+0

Danke, ich habe es herausgefunden ... Vielen Dank. –

3

Sie tun es richtig, Sie sollten die richtigen Ergebnisse erwarten. Könnten Sie bitte weitere Informationen über die von Ihnen verwendete Datenbank, zusätzliche Schemas usw. geben?

Vielleicht haben Sie einen eindeutigen Index für Symbol?

Versuchen Sie, die folgenden "sanity-Test" Ihr System auszuführen:

SELECT SUM(Size) FROM table 

Ergebnis sollte in 34

SELECT Symbol, Count(*) FROM table GROUP BY Symbol 

sollten die Ergebnisse in 3 und 2

Wenn beide die oben funktioniert perfekt wie Sie angemerkt haben, versuchen Sie bitte:

SELECT Symbol, Count(*), Sum(Size) FROM table GROUP BY Symbol 

Dies ist Ihr Code mit den Zusätzen von Count (*) und ohne die ORDER BY-Klausel. Wenn das nicht funktioniert, nachdem die beiden oben tun, bin ich wirklich verwirrt ...

+0

Nein, nichts Besonderes oder Besonderes. einfache Datenbank-Tabelle von MySQL 5.1 – Ant

+0

Beide funktionieren perfekt, aber um ehrlich zu sein, wenn ich versuche, die Auswahl Symbol, Summe (Größe) aus Tabelle Gruppe nach Symbol Reihenfolge von Symbol ASC auf einer kleinen Tabelle zu verwenden, funktioniert es auch, das Problem ist wann Ich versuche, es auf etwas großes zu verwenden (könnte die Größe das Problem sein? Oder vielleicht, wenn es NULL-Werte gibt?) – Ant

+0

Count funktioniert, Sum nicht ... – Ant