подзапрос, который вернет кол-во строк по определенным условиям. Запрос выполняется, но числа неверные и везде одинаковые.
Что я делаю не так? Достаточно ли понятно я объяснил проблему?
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';
попробуйте добавить алиас для второй таблицы и использовать этот алиас в подзапросе вместо просто имени колонки
Таблица здесь одна и та же. Попробовал добавить алиас для основного from. Ошибка: Outer query column
ну собственно вот вам и ответ,судя по всему ваше условие в подзапросе использует колонку из другой таблицы и соответсвенно условие всегда срабатывает одинаково. попробуйте ASOF JOIN
А чем это отличается от group by?
Не совсем понял, про что вы. Мне нужно для каждой строки выполнить подзапрос, у которого в условии фигурирует значение из самой строки. В SQL не силен, но надеюсь достаточно точно сформулировал то, что нужно
а не проще вывести в отдельный столбец ваш подзапрос и его применить его к строке ?
Почему ты не пропишешь select workflowid,count(*) from … where … group by workflow
мне нужна колонка, которая будет содержать кол-во строк из подзапроса. Причем тут group by я не очень понимаю
я вроде так и пытаюсь, нет?
обычный подзапрос нельзя параметризировать переменными из текущей строки. Оно так не работает в классическом SQL. Тут нет "функций" как в процедурных языках, готовых залезть грязными руками куда угодно. При вычислении выражений select вам доступны значения только текущей строки. Это больше похоже на функциональные языки программирования. Чтобы в рамках формирования строки выдачи посмотреть на соседей (да хоть бы и на всех - от верха до низа) используется относительная новация в SQL - оконные функции. Там специальным синтаксисом можно сделать необходимые выборки-группировки, чтобы посчитать все что вам нужно, и использовать при вычислении значений в текущей строке.
Обсуждают сегодня