я следующие две таблицы:SQL с помощью раздела по таблицам
CREATE TABLE `T1` (
`user`,
`str_to_match`,
`x` ,
`y`
);
и
CREATE TABLE `T2` (
`user`,
`ID`,
`str_to_match`,
`a`,
`b`
);
следующие значения вставляются в две таблицы:
INSERT INTO T1 VALUES ('U1','123', 23, 'YVAL');
INSERT INTO T1 VALUES ('U2','123', 21, 'YVAL1');
INSERT INTO T1 VALUES ('U2','121', 27, 'YVAL2');
INSERT INTO T1 VALUES ('U1','123', 28, 'YVAL3');
INSERT INTO T1 VALUES ('U1','456', 30, 'YVAL4');
INSERT INTO T2 VALUES ('U1', 1, '123', 'AVAL', 'BVAL');
INSERT INTO T2 VALUES ('U1', 2, '123', 'AVAL1', 'BVAL1');
INSERT INTO T2 VALUES ('U2', 3, '123', 'AVAL2', 'BVAL2');
INSERT INTO T2 VALUES ('U2', 4, '121', 'AVAL3', 'BVAL3');
я пытаюсь для ниже выход
T1.user, T1.str_to_match, SUM(T1.x), COUNT(T1.x), T2.ID, T2.a, T2.b
U1, '123', 51, 2, 1, 'AVAL', 'BVAL'
U1, '123', 51, 2, 2, 'AVAL1', 'BVAL1'
U2, '123', 21, 1, 3, 'AVAL2', 'BVAL2'
U2, '121', 27, 1, 4, 'AVAL3', 'BVAL3'
Я использовал над разделом по таблице T1 для пользователя cols и str_to_match и могу получить агрегацию, , но не смог присоединиться к этому с таблицей T2, чтобы получить желаемый результат. Агрегация должна выполняться только в том случае, если в таблице T1 и T2 имеется совпадение для str_to_match col для одного и того же пользователя.
Вот мой текущий запрос, который работает по таблице T1
SELECT SUM(x) OVER (PARTITION BY user, str_to_match),
COUNT(x) OVER (PARTITION BY user, str_to_match),
str_to_match,
user from T1
Тег dbms, который вы используете. (Проблема с продуктом.) – jarlh
Какая СУБД вы используете? таблица create выглядит как MySQL, но она не поддерживает функции окна –