Não é possível usar agrupar por e mais (particionar por) na mesma consulta?
Eu tenho uma mesamyTable
com 3 colunas.col_1
é umINTEGER
e as outras 2 colunas sãoDOUBLE
. Por exemplo,col_1={1, 2}, col_2={0.1, 0.2, 0.3}
. Cada elemento emcol_1
é composto por todos os valores decol_2
ecol_2
repetiu valores para cada elemento emcol_1
. A terceira coluna pode ter qualquer valor, como mostrado abaixo:
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
O que eu quero é usar uma função agregadaSUM()
noValue
partição de coluna porcol_1
e agrupados porcol_2
. A tabela acima deve ficar assim:
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
Eu tentei a seguinte consulta SQL:
SELECT col_1, col_2, sum(Value) over(partition by col_1) as sum_value
from myTable
GROUP BY col_1, col_2
Mas no DB2 v10.5, ocorreu o seguinte erro:
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.
Você pode apontar o que está errado? Eu não tenho muita experiência com SQL.
Obrigado.