2016-11-23 3 views
0

zu finden Wenn es eine Spaltennummer, die 5 Reihen hat, ist wie folgt:Wie Summe der positiven Werte und negative Werte separat in einer Spalte

+----------+ 
| values | 
+----------+ 
| -2  | 
| -1  | 
| 0  | 
| 1  | 
| 2  | 
| 3  | 
+----------+ 

ich die Summe aller negativen Werte und die Summe aller brauchen positive Werte in meinem Resultset.

+1

Was ist Ihr aktueller Ansatz? –

+0

Wählen Sie die Struktur der Ergebnismenge. Was soll es sein, 2 Spalten oder 2 Zeilen? –

+0

ERGEBNISSE IST ZWEI SPALTEN SOLLTE SUMME POSITIVER WERTE UND ANDERE SUMME NEGATIVER WERTE ZEIGEN –

Antwort

1

Mit einem CASE Ausdruck:

SELECT SUM(CASE WHEN col > 0 THEN col ELSE 0 END) AS posSum, 
     SUM(CASE WHEN col < 0 THEN col ELSE 0 END) AS negSum 
FROM yourTable 
+0

Fallausdruck. – jarlh

1

Das Problem Kontext nicht klar. Ich gehe davon aus, dass es sich um Daten handelt, die in einer RDBMS-Tabelle gespeichert sind. Ich nehme auch an, dass Sie die SQL-Sprache verwenden möchten, um Ergebnisse zu erhalten.

suppose Tabelle DATA_TABLE und Spaltennamen, die uns VALUE interessiert ist, dann sollten Abfrage aussehen

SELECT 
    SUM(CASE WHEN VALUE > 0 THEN VALUE ELSE 0 END) POSITIVE_BALANCE, 
    SUM(CASE WHEN VALUE < 0 THEN VALUE ELSE 0) NEGATIVE_BALANCE 
FROM DATA_TABLE; 

Wenn Annahmen nicht richtig sind, geben Sie bitte Ihre Frage mit mehr Details, Kontext der Fragen und Programmierumgebung bearbeiten, wo du willst es lösen.

0
SELECT SUM(values) FROM yourTable WHERE value <> 0 GROUP BY SIGN(values) 

Edit:

SQL> SELECT * FROM NUMBER_DATA WHERE value <> 0; 

    VALUE 
---------- 
     2 
     -3 
     4 
     5 
     -9 
     1 
     5 
     7 
     -8 
     10 
SQL> SELECT SIGN(VALUE), SUM(VALUE) FROM NUMBER_DATA WHERE value <> 0 GROUP BY SIGN(VALUE); 

SIGN(VALUE) SUM(VALUE) 
----------- ---------- 
      1   34 
     -1  -20 
+0

Dies wird nicht die Arbeit ohne Filterung tun –

+0

Auch Gruppe für Spalte 'SIGN (Werte)' muss auch Teil von 'SELECT' sein, sonst wie weiß man, welche Zeile ist für die Summe der positiven und die Summe von Negative? –

+0

SELECT SUM (_values), FALL WENN SIGN (_values) = 1 DANN 'SUM' ELSE 'SUBTRACT' ENDE VON #ihrTabelle GROUP BY SIGN (_values) – Mansoor

1

ich Sie brauchen, um Schlepptau Abfragen in einer wie folgt kombinieren erraten werden:

SELECT (SELECT SUM(col) FROM my_table WHERE col > 0) as positive_val, 
(SELECT SUM(col) FROM my_table WHERE col < 0) as negative_val 
Verwandte Themen