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

\d groups;

id integer
name character varying(255)

\d users;
id integer
groupid integer
ipaddress inet

\d traffic

id
ipaddress
date
ingress
egress


Те есть таблица с группами, в каждую группу входят пользователи, у каждого пользователя есть ip адрес. В таблице трафик хранится информация о том сколько трафика было для каждого ip адреса в конкретный день.

Не получается подсчитать трафик группы, те необходимо вывести

group.name traffic
group.name traffic
group.name traffic
...

Я так понимаю что сначала мы делаем JOIN чтобы получить все IP адреса которые входят в группу
(select ipaddress from groups, users where groups.id = groupid and ipaddress <> '0.0.0.0') ;

затем получить трафик на каждый из ip адресов

select traffic.ipaddress,sum(ingress) as ingress,sum(egress) as egress from traffic
where traffic.date >= '2008-01-01' and
traffic.date < '2008-02-01' and
GROUP BY traffic.ipaddress ORDER BY traffic.ipaddress ;


а как это все вместе соединить ума не приложу.
помогите пожалуйста
...
Рейтинг: 0 / 0
Выборка из трех таблиц с агрегированием
    #35067376
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select groups.name, sum(ingress) as ingress, sum(egress) as egress
from groups, users, traffic
where groups.id=users.groupid and users.ipaddress=traffic.ipaddress
and traffic.date >= '2008-01-01' and traffic.date < '2008-02-01'
group by group.name ORDER BY group.name;

или

select ...
from groups join users on (groups.id=users.groupid)
join traffic on (users.ipaddress=traffic.ipaddress)
where traffic.date >= '2008-01-01' and traffic.date < '2008-02-01'
group by ...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выборка из трех таблиц с агрегированием
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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