Mam tabelę myTable
z 3 kolumnami. col_1
to INTEGER
, a pozostałe 2 kolumny to DOUBLE
. Na przykład col_1={1, 2}, col_2={0.1, 0.2, 0.3}
. Każdy element w col_1
składa się z wszystkich wartości col_2
i col_2
ma powtarzające się wartości dla każdego elementu w col_1
. The 3rd kolumna może mieć dowolną wartość, jak pokazano poniżej:Nie można używać grup przez i po (partycja według) w tym samym zapytaniu?
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
Co chcę jest użycie agregatów funkcję SUM()
na partycji Value
kolumny col_1
i pogrupowane według col_2
. Powyższa tabela powinna wyglądać następująco:
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
Próbowałem następujące zapytanie SQL:
SELECT col_1, col_2, sum(Value) over(partition by col_1) as sum_value
from myTable
GROUP BY col_1, col_2
Ale DB2 10.5 dało następujący błąd:
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.
Można uprzejmie wskaż, co jest nie tak. Nie mam dużego doświadczenia z SQL.
Dziękuję.
Co ma MySQL zrobić z pytaniem? (Nie oznaczaj produktów nie związanych ...) – jarlh