Ho una tabella myTable
con 3 colonne. col_1
è un INTEGER
e le altre 2 colonne sono DOUBLE
. Ad esempio, col_1={1, 2}, col_2={0.1, 0.2, 0.3}
. Ogni elemento in col_1
è composto da tutti i valori di col_2
e col_2
ha valori ripetuti per ciascun elemento in col_1
. Il 3 ° colonna può avere qualsiasi valore come illustrato di seguito:Non è possibile utilizzare il gruppo più e più volte (partition by) nella stessa query?
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
Quello che voglio è quello di utilizzare un aggregato funzione SUM()
sulla partizione Value
colonna col_1
e raggruppati per col_2
. La tabella qui sopra dovrebbe essere simile a questo:
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
ho provato la seguente query SQL:
SELECT col_1, col_2, sum(Value) over(partition by col_1) as sum_value
from myTable
GROUP BY col_1, col_2
Ma su DB2 v10.5 ha dato il seguente errore:
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.
Can voi indicare gentilmente cosa è sbagliato. Non ho molta esperienza con SQL.
Grazie.
Che cosa ha a che fare MySQL con la domanda? (Non taggare prodotti non coinvolti ...) – jarlh