Sum mit Abfrage

Fuxi60

Benutzer
Beiträge
16
Hallo, ich brauche eine Sum-Abfrage über 2 Spalten.
Siehe Tabelle:
z.B. Alles was ID1 ist soll addiert werden.
Ergeniss ist dann : 63

Vielen Dank


ID1 ID2 Wert1 Wert2
1 1 10 20
1 2 11 21
2 1 12 22
2 2 13 23
 
Werbung:
Sieht für mich nach HTML-Code aus (?)

Um in SQL über mehrere Spalten zu summieren, einfach die gewollten Spalten miteinander addieren.

Tabelle erstellen:
Code:
create table adds(id int, col1 int, col2 int);

Werte einfügen:
Code:
insert into adds values (1, 2, 5);
insert into adds values (1, 2, 5);
insert into adds values (1, 2, 5);
insert into adds values (2, 1, 5);
insert into adds values (2, 1, 5);
insert into adds values (3, 4, 5);

Dann die Abfrage bauen:
Code:
select id, sum(col1+col2) from adds group by id;

Resultat (bei meiner Tabelle):
Code:
3    9
2    12
1    21

id 3 stimmt, weil 4+5 gleich 9 ist
id 2 stimmt, weil 1+1+5+5 gleich 12 ist
id 1 stimmt, weil 2+2+2+5+5+5 = 6+15 = 21 ist
 
zwei id's in einer Tabelle?
erzähl ein wenig von der Hintergrundidee, was du anhand der Datenbank erleichtern möchtest, wie es aussieht, ist die Struktur bei dir nicht ganz in Ordnung.

EDIT:
deine Abfrage würde in etwa so aussehen:
Code:
select sum(wert1+wert2) from table where id1 = 1 or id2 = 1
 
Hallo, danke nochmal.
Die zwei Id's sind mit einer anderen Tabellen verknüpft.
Der Datensatz hat natürlich nur eine Id, die ich aber nicht oben angegeben habe.
Das Ergebniss von Kampfgummibaerlie ist leider nicht ganz das was ich möchte.
Wenn beide Id's 1 sind , dann soll addiert werden. Ist aber nur eine 1, dann soll nur der Wert genommen werden
wo auch die Id 1 ist.
 
Hallo, ich brauche eine Sum-Abfrage über 2 Spalten.
Siehe Tabelle:
z.B. Alles was ID1 ist soll addiert werden.
Ergeniss ist dann : 63

Vielen Dank


ID1 ID2 Wert1 Wert2
1 1 10 20
1 2 11 21
2 1 12 22
2 2 13 23
wie man folgend sehen kann, wäre das Ergebnis 62:

Code:
postgres=# create table fuxi60(id1 int, id2 int, wert1 int, wert2 int);
CREATE TABLE
postgres=# copy fuxi60 from stdin;
Geben Sie die zu kopierenden Daten ein, gefolgt von einem Zeilenende.
Beenden Sie mit einem Backslash und einem Punkt alleine auf einer Zeile, oder einem EOF-Signal.
>> 1    1    10      20
>> 1    2    11    21
>> 2    1    12    22
>> 2    2    13    23
>> \.
COPY 4
postgres=# select sum(wert1 + wert2) from fuxi60 where id1=1;
 sum 
-----
  62
(1 Zeile)

postgres=#
 
ach so.

Code:
postgres=# select * from fuxi60 ;
 id1 | id2 | wert1 | wert2 
-----+-----+-------+-------
   1 |   1 |    10 |    20
   1 |   2 |    11 |    21
   2 |   1 |    12 |    22
   2 |   2 |    13 |    23
(4 Zeilen)

postgres=# select sum(case when id1 = 1 then wert1 else 0 end + case when id2 = 1 then wert2 else 0 end) from fuxi60 ;
 sum 
-----
  63
(1 Zeile)

postgres=#
 
Werbung:
Zurück
Oben