powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Возможно ли подсчитать одним запросом?
1 сообщений из 1, страница 1 из 1
Возможно ли подсчитать одним запросом?
    #38789048
Majestio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

В процессе разработки отчета возникла задача относительно "хитрого" подсчета. Время поджимало - решил тремя запросами и частичным расчетом на клиенте. Но чувствую, то ли практики не хватает с SQL, то ли воображения. Посему, прошу ликбеза.

Усеченная структура БД


Clients - хранит карточки клиентов
Service - хранит карточки обслуживаний
Service2Clients - хранит связки клиентов и обслуживаний (многие-к-многим)
RubricaNames - хранит каталог рубрикаторов
Rubricator - хранит рубрики по всем рубрикаторам
Points2Rubrica - хранит привязки значений по рубрикам к различным сущностям БД (например, к обслуживаниям)

Задача

Найти количество обслуживаний клиентов за период по группе рубрикаторов.

Моя неправильная реализация

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT r."Name", COUNT(s."Id") AS "Cnt" FROM (
  SELECT rn."Id", rn."Name" FROM public."RubricaNames" AS rn
  WHERE rn."Id" IN (90,91,92,93,94,134)
  ORDER BY rn."Name"
) AS r
LEFT OUTER JOIN  public."Rubricator" AS ru ON ru."GroupId" = r."Id"
LEFT OUTER JOIN  public."Points2Rubrica" AS pr ON pr."Rubrica" = ru."Id"
LEFT OUTER JOIN (
   SELECT * FROM public."Service" AS sv 
   WHERE sv."Date" >= '2011-09-01' AND sv."Date" <= '2014-09-01'
) AS s ON s."Id" = pr."Point"
GROUP BY r."Id",r."Name"
ORDER BY r."Name"


Результат



Неправильно следующее


Цифры тут получаются недостоверные, т.к. считается не все. Подсчет идет по обслуживаниям, а не по обслуженным клиентам. Так как есть вероятность обслуживания группы - одно обслуживание на группу клиентов

Не хватает одной строчки, в которой указано количество обслуживаний за указанный период без привязанных рубрикаторов по данной совокупности перечисленных рубрикаторов

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


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