powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужна помощь по группированию агрегата
12 сообщений из 12, страница 1 из 1
Нужна помощь по группированию агрегата
    #38782135
Жбан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток! Заранее прошу прощения за возможно глупый вопрос, но в БД вообще и firebird'е в частности я не специалист, а возникла необходимость построить такого рода запрос.
Firebird 1.5. Есть две таблицы:
Ведомости(№_ведомости, мат_отв_лицо) и Выдача(№_ведомости, материал, сумма). Нужно сделать выборку, сгруппированную по материально ответственным лицам с указанием количества ведомостей и суммы материалов.
Запрос
Код: sql
1.
2.
3.
4.
5.
Select Ведомости.мат_отв_лицо, count(Ведомости.№_ведомости), sum(Выдача.сумма)
from Ведомости
left join Выдача
on Ведомости.№_ведомости=Выдача.№_ведомости
group by Ведомости.мат_отв_лицо


приводит к тому, что суммы считаются правильно, а количество ведомостей равняется количеству сумм в ведомостях. Я так понимаю, что нужно сначала сгруппировать ведомости, чтобы получить суммы по ведомостям, а потом прикрутить это к материально ответственным лицам, но как это правильно сделать - не знаю.
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782136
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жбан,

в count DISTINCT добавь
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782138
Жбан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал так, но почему-то во всем поле COUNT проставилось 1 (единица)
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782156
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖбанПробовал так, но почему-то во всем поле COUNT проставилось 1 (единица)
Ну значит по каждому "Ведомости.мат_отв_лицо" только одна "Ведомости.№_ведомости"
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782183
re-dis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Жбан,

что-то вроде этого можно попробовать
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select таб1.мат_отв_лицо, таб1.сумма, таб2.колво
(select Ведомости.мат_отв_лицо, sum(Выдача.сумма) as "сумма"
from Ведомости
inner join Выдача
on Ведомости.№_ведомости=Выдача.№_ведомости
group by Ведомости.мат_отв_лицо) as таб1
inner join (select Ведомости.мат_отв_лицо, count(*) as "колво" from Ведомости group by Ведомости.мат_отв_лицо) as таб2
on таб1.мат_отв_лицо=таб2.мат_отв_лицо
  
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782191
re-dis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select таб1.мат_отв_лицо, sum(таб1.сумма), sum(таб1.колво)
from
(select Ведомости.№_ведомости, Ведомости.мат_отв_лицо, sum(Выдача.сумма) as "сумма", 1 as "колво"
from Ведомости
inner join Выдача
on Ведомости.№_ведомости=Выдача.№_ведомости
group by Ведомости.№_ведомости,Ведомости.мат_отв_лицо) as таб1
group by таб1.мат_отв_лицо
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782282
Жбан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7m,

Точно не одна
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782284
Жбан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
re-dis,

Select ... from select не прокатит, firebird 1.5 такую конструкцию вроде не понимает
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782301
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖбанТочно не одна
А ты уьели группировку, выведи этот столбец и проверь. А то думать-то ты можешь всё что
хочешь...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782481
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
Select Ведомости.мат_отв_лицо, count(Ведомости.№_ведомости)
from Ведомости
group by Ведомости.мат_отв_лицо

а так что показывает?
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782482
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roadster
Код: sql
1.
2.
3.
Select Ведомости.мат_отв_лицо, count(distinct Ведомости.№_ведомости)
from Ведомости
group by Ведомости.мат_отв_лицо


а так что показывает?поправил
...
Рейтинг: 0 / 0
Нужна помощь по группированию агрегата
    #38782917
Жбан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно, при добавлении DISTINCT в COUNT все заработало как надо, просто я в пылу экспериментов выставил DISTINCT не на то поле. Всем большое спасибо за помощь!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нужна помощь по группированию агрегата
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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