Nicht verwenden, group by-und over(partition by) in der gleichen Abfrage?

Ich habe eine Tabelle myTable mit 3 Spalten. col_1 ist ein INTEGER und die anderen 2 Spalten DOUBLE. Zum Beispiel col_1={1, 2}, col_2={0.1, 0.2, 0.3}. Jedes element in col_1 setzt alle Werte der col_2 und col_2 wiederholte Werte aufweist, die für jedes element in col_1. Die 3. Spalte kann einen beliebigen Wert haben, wie unten gezeigt:

    col_1 | col_2 | Value
    ----------------------
    1     |  0.1  |  1.0
    1     |  0.2  |  2.0
    1     |  0.2  |  3.0
    1     |  0.3  |  4.0
    1     |  0.3  |  5.0
    2     |  0.1  |  6.0
    2     |  0.1  |  7.0
    2     |  0.1  |  8.0
    2     |  0.2  |  9.0
    2     |  0.3  |  10.0

Was ich will, ist die Verwendung einer Aggregat-Funktion SUM() auf die Value Spalte partition col_1 nach col_2. Die Obige Tabelle sollte wie folgt Aussehen:

    col_1 | col_2 | sum_value
    ----------------------
    1     |  0.1  |  1.0
    1     |  0.2  |  5.0
    1     |  0.3  |  9.0
    2     |  0.1  |  21.0
    2     |  0.2  |  9.0
    2     |  0.3  |  10.0

Habe ich versucht, das folgende SQL-Abfrage:

SELECT col_1, col_2, sum(Value) over(partition by col_1) as sum_value
from myTable
GROUP BY col_1, col_2

Aber auf DB2 v10.5 es gab folgende Fehler:

SQL0119N  An expression starting with "Value" specified in a SELECT 
clause, HAVING clause, or ORDER BY clause is not specified in the 
GROUP BY clause or it is in a SELECT clause, HAVING clause, or ORDER 
BY clause with a column function and no GROUP BY clause is specified.

Kann Sie freundlich darauf hinweisen, was falsch ist. Ich habe nicht viel Erfahrung mit SQL.

Danke.

  • Was hat MySQL mit der Frage zu tun? (Nicht-tag-Produkte, die nicht beteiligt...)
InformationsquelleAutor user3557405 | 2015-03-25
Schreibe einen Kommentar