powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Очень нужна Ваша помощь - помогите соединить два подзапроса
2 сообщений из 2, страница 1 из 1
Очень нужна Ваша помощь - помогите соединить два подзапроса
    #39476201
Истина где-то рядом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется две таблицы:

1. Потребность - список позиций с лимитом:
ProductLimit1100245340


2. Предложения от поставщиков - список поставщиков, позиции товаров и предлагаемая партия поставки:
ProviderQty11801250215022200

Из темы 20575329 благодаря Вам выяснил как при помощи WITH собирать данные до определенного лимита. Но как сделать так, чтобы этот запрос выполнялся по каждому пункту первой таблицы?

Попытка вставить подзапрос (WITH) по лимиту в основном запросе после оператора FROM создает ошибку, что Таблица существует, но к ней невозможно обратиться.
...
Рейтинг: 0 / 0
Очень нужна Ваша помощь - помогите соединить два подзапроса
    #39476575
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аналогично. Только надо оконной функцией проходить не по всему набору вместе, а отдельно по группам с одинаковым значением product.

PARTITION BY

3.5. Window Functions

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
with requirement(product, lmt) as (
    values
    (1, 100),
    (2, 45),
    (3, 40)
), offer(provider, product, qty) as (
    values 
    (1, 1, 80),
    (1, 2, 50),
    (2, 1, 50),
    (2, 2, 200)
), t1 as (
    select * from offer natural join requirement
), t2 as ( 
    select *, sum(qty) over(partition by product order by provider) as sum_qty from t1
), t3 as (
    select *, coalesce(lag(sum_qty) over(partition by product order by provider), 0) as lag_sum_qty from t2
), t4 as (
    select * from t3 where lag_sum_qty < lmt
)
select product, provider, case when sum_qty < lmt then qty else lmt - lag_sum_qty end as qty from t4;

...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Очень нужна Ваша помощь - помогите соединить два подзапроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]