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

Всем привет! Подскажите пожалуйста, в нижнем запросе в скобках у

меня идет select query, который возвращает число. Как мне прокрутить это число в case … when statement? Хочу проверить это число на диапазон и установить соответсвующее значение для колонки:

case (query) when > 1 and <5 then 'case1' when >5 and < 10 then 'b' else 'c' end as "colomnName"

13 ответов

22 просмотра

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

Yevgeniy-P Автор вопроса
Григорий Яхонтов
попробуй подзапрос в join пихнуть. если нужны данн...

Да можно этот квери в каждый when впихнуть, просто думал может как-нибудь можно результат этого запроса в отдельную константу вынести и ее проверять, чем весь запрос во все when случаи вставлять

Просто как под запрос вставь, и всё

Yevgeniy P
Да можно этот квери в каждый when впихнуть, просто...

select case b.col_name when cond then val end from table_1 a, lateral ( подзапрос ) b

Case (select val from xxx....) When 1 then 'one' When 42 then 'the answer' else 'who knows' end

Ilya Zviagin
Case (select val from xxx....) When 1 then 'one' ...

у него упирается в то что он вхождение в диапазон хочет проверять

Григорий Яхонтов
у него упирается в то что он вхождение в диапазон ...

Можно перечислить несколько значений, либо использовать другую форму case, повторяя в каждом подзапрос

Ilya Zviagin
Можно перечислить несколько значений, либо использ...

Можно конечно. Вариантов много разных. Нужно будет посмотреть в планировщике, какой вариант меньше стоит.

Ilya Zviagin
Подзапрос не будет выполняться 20 раз.

Можно так: select (with subq as (подзапрос) select case when (table subq) >1 and (table subq) < 5 /*лично я бы применил between 2 and 4, если там целые числа*/ then 'case1' when (table subq) >5 and (table subq) <10 then 'b' else 'c' end ) as "columnName" from ...

Ilya Zviagin
Подзапрос не будет выполняться 20 раз.

хотите сказать что если подзапрос в каждом where прописан и в подзапросе участвуют колонки из запроса то подзапрос выполнится один раз ?

Григорий Яхонтов
хотите сказать что если подзапрос в каждом where п...

зависит от подзапроса. планировщик должен постараться оптимизировать

Григорий Яхонтов
хотите сказать что если подзапрос в каждом where п...

Да, одинаковые подзапросы выполнятся один раз. Если подзапрос коррелированный, то по одному разу на запись родительского. Это классика оптимизаций для оптимизаторов, все должны уметь.

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

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

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