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

Всех приветствую! кто подскажет, куда двигаться? Есть таблица на 100

столбцов, одни из которых ModifiedOn(Datetime), Id, sum. Во все остальные столбцы могут записываться NULL. Необходимо вывести все строки, имеющие последние значения по ModifiedOn (можно сказать "схлопывая" соседние, убирая Null) и просуммировать sum. Как сделать LAST_VALUE(*) over(partition by Id order by ModifiedOn desc) для всех столбцов?

10 ответов

24 просмотра

argMax(value, ModifiedOn)+group by id?

Efim- Автор вопроса
Clir
argMax(value, ModifiedOn)+group by id?

это будет одна результирующая строка а мне нужно для каждого id вывести строку, которая будет содержать последние не null значения всех столбцов согласно ModifiedOn и просуммировать для каждого id все значения sum таблицы

Efim
это будет одна результирующая строка а мне нужно д...

select id, argMaxIf(value, ModifiedOn, value is not Null), argMax(value, ModifiedOn) from table group by id

Efim
это будет одна результирующая строка а мне нужно д...

select id, sum(sum) as total, * except (id,sum,DateTime) apply (groupArray(10)) from (select * from table order by ModifiedOn desc) group by id Тут будет группировка с массивами, по 10 штук последних. Если надо - можно таким-же образом их развернуть назад через arrayJoin

Efim- Автор вопроса
Boris
select id, sum(sum) as total, * except (id,sum,Dat...

---------------------------————————————- id|datetime| value1| value2|value3|...value N ---------------------------————————————- 1 |2021-01-03 14:38:02.000 |a | NULL |f | 1 |2021-01-03 15:38:02.000 |NULL |c | NULL | 2 |2021-01-03 14:38:02.000 | NULL |d |g | 2 |2021-01-03 15:38:02.000 |b |e | NULL | вот так лучше. Например: нужно схлопнуть строки так, что бы получилось для id=1|a|c|f|, а для id= 2 |b|e|g|.

Efim- Автор вопроса
Boris
select id, sum(sum) as total, * except (id,sum,Dat...

получается что то не то

Efim
---------------------------————————————- id|dateti...

а если строк больше? Куда девать лишние?

Efim- Автор вопроса
Boris
а если строк больше? Куда девать лишние?

в том и дело, что строк с id=1 множество, но в каких то из них столбцы получают null. Надо собрать из них одну с id=1, самым свежим datetime, забрав в результирующую строку самое последнее ненулловое значение

Efim
в том и дело, что строк с id=1 множество, но в как...

Если вам надо не список на 10, а ровно одно последнее - используйте аггрегатную функцию any. Вроде как оно должно пропускать Nulls. groupArray точно их выкидывает. select id, sum(sum) as total, * except (id,sum,DateTime) apply (any) from (select * from table order by ModifiedOn desc) group by id

Efim- Автор вопроса

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта