Zeilen zusammenfassen und addieren

Anja_R

Neuer Benutzer
Beiträge
4
Hallo zusammen,
vielleicht kann mir von Euch jemand bei meinem Problem helfen.

Ich habe eine Tabelle mit:

Abteilung | Auftraege
---------------------
CD/FGG1 | 4
CD/FGG2 | 7
CD/FGG3 | 2
FG/HLB1 | 8
FG/HLB2 | 1

Wie kann ich jetzt eine Abfrage schreiben, die mir die Abteilungen CD/FGG1, CD/FGG2 und CD/FGG3 zusammenfasst und die Aufträge summiert. Das Gleiche mit den Abteilungen FG/HLB1 und FG/HLB2.

Die Tabelle soll dann so aussehen:

Abteilung | Auftraege
--------------------
CD/FGG | 13
FG/HLB | 9

Ist das überhaupt möglich? Ich wäre total froh wenn ihr mir helfen könntet.

Viele Grüße,
Anja
 
Werbung:
AW: Zeilen zusammenfassen und addieren

Probier mal...

Code:
CREATE TABLE abt_auf (
 id INT NOT NULL,
 abteilung VARCHAR(20),
 auftraege INT NOT NULL,
 PRIMARY KEY(id)
);
 
INSERT INTO abt_auf VALUES
(1, 'CD/FGG1' , 4),
(2, 'CD/FGG2' , 7),
(3, 'CD/FGG3' , 2),
(4, 'FG/HLB1' , 8),
(5, 'FG/HLB2' , 1);
 
 
SELECT SUBSTR(abteilung,1,6) AS hauptabteilung, SUM(auftraege) 
  FROM abt_auf
GROUP BY SUBSTR(abteilung,1,6)
ORDER BY SUBSTR(abteilung,1,6);
+----------------+----------------+
| hauptabteilung | SUM(auftraege) |
+----------------+----------------+
| CD/FGG         |             13 |
| FG/HLB         |              9 |
+----------------+----------------+
2 rows in set (0.00 sec)
mysql>

Grüße
Thomas
 
AW: Zeilen zusammenfassen und addieren

hallo thomas,

VIELEN Dank für die schnelle Antwort!

Damit kann ich auf jedenfall etwas anfangen. Eigentlich ist es so einfach...oh mann..

Es kann aber sein, dass ich in nächster Zeit nochmal eine Frage dazu habe :)
 
AW: Zeilen zusammenfassen und addieren

Okay jetzt komm ich doch gleich nochmal mit einer zweiten Frage:

Ich habe immer noch die gleiche Tabelle nur ist noch eine weitere Abteilungen dazugekommen:

Abteilung | Auftraege
---------------------
CD/FGG1 | 4
CD/FGG2 | 7
CD/FGG3 | 2
FG/HLB1 | 8
FG/HLB2 | 1
HLL1/FGG-1 | 5

Wenn ich jetzt das SUBTR anwende bekomm ich ja nur HLL1/F. Ich möchte aber dass er mir schon die Abteilung sinnvoll ausgibt: HLL1/FGG

Bis jetzt wollte ich das so lösen:

SELECT
CASE
WHEN abteilung = 'CD/FGG1'
OR abteilung = 'CD/FGG2'
OR abteilung = 'CD/FGG3'
OR abteilung = 'FG/HLB1'
OR abteilung = 'FG/HLB2'
THEN SUBSTR(abteilung,1,6)
ELSE SUBSTR(abteilung,1,8)
END abteilung,
COUNT (auftraege) Auftraege,
GROUP BY SUBSTR(abteilung,1,6), SUBSTR(abteilung,1,8);

Jetzt bekomm ich immer die Fehlermeldung:
not a GROUP BY expression

wie kann ich das lösen? vielen Dank schon mal für eure Hilfe!!

Grüße Anja
 
AW: Zeilen zusammenfassen und addieren

Mach mal so...
Code:
INSERT INTO abt_auf VALUES
(6, 'HLL1/FGG-1' ,5 );
 
SELECT CASE (LENGTH(abteilung))
        WHEN 7 THEN SUBSTRING(abteilung,1,6)
        WHEN 10 THEN SUBSTRING(abteilung,1,8)
       ELSE
        abteilung
       END AS hauptabteilung,
       SUM(auftraege)
  FROM abt_auf
GROUP BY CASE (LENGTH(abteilung))
          WHEN 7 THEN SUBSTRING(abteilung,1,6)
          WHEN 10 THEN SUBSTRING(abteilung,1,8)
         ELSE
          abteilung
         END       
ORDER BY CASE (LENGTH(abteilung))
          WHEN 7 THEN SUBSTRING(abteilung,1,6)
          WHEN 10 THEN SUBSTRING(abteilung,1,8)
         ELSE
          abteilung
         END;
 
+----------------+----------------+
| hauptabteilung | SUM(auftraege) |
+----------------+----------------+
| CD/FGG         |             13 |
| FG/HLB         |              9 |
| HLL1/FGG       |              5 |
+----------------+----------------+
3 rows in set (0.00 sec)
mysql>
Ob es allerdings sinnvoll ist, die Abteilungsnamen so auszuwerden ist fraglich. Da fehlt eine korrekte übergeordnete Hauptabteilung.

Grüße
Thomas
 
Werbung:
AW: Zeilen zusammenfassen und addieren

Sorry für die späte Antwort!

Also vielen vielen Dank für deine Hilfe!! Bei mir funktioniert es jetzt!

Meine Werte und meine Tabelle waren nur ein vereinfachtes Beispiel, um mein Problem besser veranschaulichen zu können. Eigentlich sieht das alles ein bisschen anders aus ;).

Also nochmal, vielen Dank!!

Viele Grüße,
Anja
 
Zurück
Oben