184 похожих чатов

Подскажте пожалуйста. Я для каждой строки хочу посчитать агрегационную функцию для

строк с тем же первичным ключем.

Например
pk, attr
1, a
1, b
2, c

select pk, attr, accomulate(groupArray, attr) from tbl
1, a, [a, b]
1, b, [a, b]
2, c, [c]

Что-то похожее на lateral join и runningAccumulate
только ищущая по всем блокам, а не по текущему.
Строки с одним PK могут быть в разных блоках.

Можно такое сделать?

13 ответов

25 просмотров

GROUP BY не ?

Mikhail-Kuzmin Автор вопроса
Константин
GROUP BY не ?

не тогда было бы 1, [a, b] 2, [c] а не 1, a, [a, b] 1, b, [a, b] 2, c, [c]

select pk, attr, attrarr from ( select pk, groupArray(attr) attrarr from ( select 1 as pk, 'a' as attr UNION ALL select 1, 'b' UNION ALL select 2, 'c' ) group by pk ) array join attrarr as attr ; ┌─pk─┬─attr─┬─attrarr───┐ │ 1 │ a │ ['a','b'] │ │ 1 │ b │ ['a','b'] │ │ 2 │ c │ ['c'] │ └────┴──────┴───────────┘

Mikhail-Kuzmin Автор вопроса
【D】【J】
select pk, attr, attrarr from ( select pk, group...

я намерено написал: «Я для каждой строки хочу посчитать агрегационную функцию для строк с тем же первичным ключем.» Я хочу исходную таблицу фильтровать по pk и не pk. Т.е. я хочу отфильтровать табличку и прицепить к строкам ВСЕ строки с тем же pk. В том числе не попавшие под условие.

Mikhail Kuzmin
я намерено написал: «Я для каждой строки хочу пос...

их придется фильтровать в arrayFilter уже либо в самом конце

Mikhail-Kuzmin Автор вопроса
【D】【J】
их придется фильтровать в arrayFilter уже либо в с...

ну вот в том то и проблема, что их много и я хочу сначала отфильтровать и потом подцепить а не выбрать очень-много-строк, сгруппировать и фильтровать.

Mikhail Kuzmin
я намерено написал: «Я для каждой строки хочу пос...

select pk, attr, attrarr from ( select pk, groupArray(attr) attrarr from ( select 1 as pk, 'a' as attr UNION ALL select 1, 'b' UNION ALL select 2, 'c' ) group by pk ) array join attrarr as attr where attr!='b' ; ┌─pk─┬─attr─┬─attrarr───┐ │ 1 │ a │ ['a','b'] │ │ 2 │ c │ ['c'] │ └────┴──────┴───────────┘

Mikhail-Kuzmin Автор вопроса
【D】【J】
select pk, attr, attrarr from ( select pk, group...

where attr!='b' - как раз снаружи, а нужно внутри

Mikhail Kuzmin
ну вот в том то и проблема, что их много и я хочу ...

тогда подзапросом... дайте сгенерированный селект из numbers с примерами фильтров. а то сложно угадывать

Mikhail Kuzmin
where attr!='b' - как раз снаружи, а нужно внутри

ну вы хотите при этом чтобы в массиве 'b' остался и не фильтровался же?

Mikhail-Kuzmin Автор вопроса
【D】【J】
тогда подзапросом... дайте сгенерированный селект ...

Например pk, attr 1, a 1, b 2, a select pk, attr, accumulate(groupArray, attr) from tbl where attr = 'a'; 1, a, [a, b] 2, a, [a]

Mikhail Kuzmin
Например pk, attr 1, a 1, b 2, a select pk, attr,...

оконные функции будут так же фильтровать внутри себя, это нормально. вам только с подзапросами

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта