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

Коллеги, всем добрый вечер. Мне нужно для каждой строки выполнить

подзапрос, который вернет кол-во строк по определенным условиям. Запрос выполняется, но числа неверные и везде одинаковые.
Что я делаю не так? Достаточно ли понятно я объяснил проблему?
select *,
(select count(*)
from human_region_coverage sq
where sq.pos_start >= pos_start
and sq.pos_end <= pos_end
and sq.dp = 0
and workflow_id = '72a307e0-c7c3-4d4d-a892-0c003d6c8d1f'
) sq
from human_region_coverage
where workflow_id = '72a307e0-c7c3-4d4d-a892-0c003d6c8d1f';

11 ответов

4 просмотра

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

Ivan-Blohin Автор вопроса
Vladimir Goncharov
попробуйте добавить алиас для второй таблицы и исп...

Таблица здесь одна и та же. Попробовал добавить алиас для основного from. Ошибка: Outer query column

Ivan Blohin
Таблица здесь одна и та же. Попробовал добавить ал...

ну собственно вот вам и ответ,судя по всему ваше условие в подзапросе использует колонку из другой таблицы и соответсвенно условие всегда срабатывает одинаково. попробуйте ASOF JOIN

А чем это отличается от group by?

Ivan-Blohin Автор вопроса
Алексей Осипов
А чем это отличается от group by?

Не совсем понял, про что вы. Мне нужно для каждой строки выполнить подзапрос, у которого в условии фигурирует значение из самой строки. В SQL не силен, но надеюсь достаточно точно сформулировал то, что нужно

Ivan Blohin
Не совсем понял, про что вы. Мне нужно для каждой ...

а не проще вывести в отдельный столбец ваш подзапрос и его применить его к строке ?

Ivan Blohin
Не совсем понял, про что вы. Мне нужно для каждой ...

Почему ты не пропишешь select workflowid,count(*) from … where … group by workflow

Ivan-Blohin Автор вопроса
Алексей Осипов
Почему ты не пропишешь select workflowid,count(*) ...

мне нужна колонка, которая будет содержать кол-во строк из подзапроса. Причем тут group by я не очень понимаю

Ivan-Blohin Автор вопроса

обычный подзапрос нельзя параметризировать переменными из текущей строки. Оно так не работает в классическом SQL. Тут нет "функций" как в процедурных языках, готовых залезть грязными руками куда угодно. При вычислении выражений select вам доступны значения только текущей строки. Это больше похоже на функциональные языки программирования. Чтобы в рамках формирования строки выдачи посмотреть на соседей (да хоть бы и на всех - от верха до низа) используется относительная новация в SQL - оконные функции. Там специальным синтаксисом можно сделать необходимые выборки-группировки, чтобы посчитать все что вам нужно, и использовать при вычислении значений в текущей строке.

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

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

Доброй ночи. Вопрос знатокам. Имеется некая таблица, результат которой выведен в DBGrid на форме. И есть форма, с помощью которой можно как добавить запись, так и отредактиров...
Евгений
27
а всё почему? потому что ассемблер в отличии от яву порождает множество пагубных привычек, среди которых например можно отметить использование глобальных переменных для всего ...
Mixail Frolov
35
Всем привет 👋 Подскажите пожалуйста, а чего тут не хватает permission или образ битый? Running with gitlab-runner 17.0.0 (44feccdf) on gitlab-runner-c58775949-d7znz YxYz2zp...
Max
2
анрей С какой целью зашёл?
КТ315
42
Кто нибудь из участников чата пишет на ассемблере под GNU/Linux?
Spiker01
24
я часов 15 назад начал пытаться написать хоть что-то напоминающее ос и у меня есть проблема, которую я пытаюсь решить последние часов 5: есть крч 2 исходника с минимальным код...
Al1to
17
Всем привет ребят! Мб кто-то сталкивался? adminСomponents .get("searchСomponents", use: searchComponents) .openAPI( summary: ...
Admin Adminov
2
Кстати вопрос. Проанализировав свои проекты я понял, что в наиболее ценных из них Асм использовался для организации real-time процессов (внутри DOS). А какие есть способы сего...
Alexander Morozov
18
Я не очень много работал с потоками, тут возник вопрос - если будет одновременный доступ к памяти из двух разных потоков, это само по себе приведет к ошибке?
The Bird of Hermes
25
Насколько моя реализация Exercise 1 плохая? data MessageType = Info | Warning | Error Int deriving (Show, Eq) type TimeStamp = Int data LogMessage = LogMessage ...
= ?
6
Карта сайта