powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / сложный запрос
2 сообщений из 2, страница 1 из 1
сложный запрос
    #38667209
terrenus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Помогите, пожалуйста решить следующую проблему.
Есть три таблицы:
Income[id, Sdate, id_elem, amount] (приход деталей, содержит инфо о приходящих на склад деталях, из таблицы Nomenclature, за определенную дату, в определенном количестве),
Outgo[id, Sdate, id_elem, amount] (расход деталей, содержит инфо о расходованных деталях, из таблицы Nomenclature, за определенную дату, в определенном количестве),
Nomenclature[id, name_elem] (справочник деталей).
Необходимо выбрать наименование детали, дата расхода, когда расходованное количество превысило имеющееся количество деталей. Упорядочить по наименованию детали и дате расхода.
Пытаюсь делать так:
а) Создаем представление, которое возвращает разность между количеством каждой когда-либо израсходованной запчасти, и количеством этой же когда-либо пришедшей на склад запчасти:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE VIEW OutMinusInc AS 
select outgo.sdate, nomenclature.id, 
sum(outgo.amount)-sum(income.amount) AS delta 
FROM outgo JOIN nomenclature ON 
outgo.id_elem=nomenclature.id 
JOIN income ON 
income.id_elem=nomenclature.id 
group by outgo.sdate, nomenclature.id;



b) Выводим название запчасти и дату расхода, учитывая, что разность, возвращаемая представлением OutMinusInc, должна быть больше нуля:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT name_elem, outgo.sdate 
FROM outgo JOIN nomenclature ON 
outgo.id_elem=nomenclature.id 
JOIN income ON 
income.id_elem=nomenclature.id 
JOIN OutMinusInc ON 
nomenclature.id=OutMinusInc.id 
WHERE delta>0
GROUP BY outgo.sdate,name_elem 
ORDER BY name_elem, outgo.sdate;



Это работает не верно. Из за того, что происходит группировка по датам (в пункте а), получается неверный результат. Без группировки по дате запрос не работает. Как избавиться от группировки и получить верный результат?
...
Рейтинг: 0 / 0
сложный запрос
    #38667372
почитать про аналитические оконные агрегаты (sum() over (...), count() over (...) )
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / сложный запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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