У меня есть стол myTable
с 3 колонками. col_1
- INTEGER
, а остальные 2 столбца - DOUBLE
. Например, col_1={1, 2}, col_2={0.1, 0.2, 0.3}
. Каждый элемент в col_1
состоит из всех значений col_2
и col_2
имеет повторяющиеся значения для каждого элемента в col_1
. Третий столбец может иметь любое значение, как показано ниже:Невозможно использовать группу заново (перегородкой) в том же запросе?
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
То, что я хочу, чтобы использовать агрегатную функцию-SUM()
на перегородке в Value
колонки по col_1
и сгруппированы по col_2
. В приведенной выше таблице должно выглядеть следующим образом:
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
Я попытался следующий SQL-запрос:
SELECT col_1, col_2, sum(Value) over(partition by col_1) as sum_value
from myTable
GROUP BY col_1, col_2
Но v10.5 DB2 он дал следующую ошибку:
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.
Можете ли вы любезно укажите, что не так. У меня нет большого опыта работы с SQL.
спасибо.
Что может сделать MySQL с вопросом? (Не помещайте продукты, которые не участвуют ...) – jarlh