powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение двух таблиц с датами
3 сообщений из 3, страница 1 из 1
Объединение двух таблиц с датами
    #39873799
Kudrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Просьба помочь в решение одной несложной задачи с объединением двух таблиц с использованием временного периода.

Задача:
Необходимо вернуть сумму выручки по филиалам и сегментам за 1 месяц скажем - за январь 2017 года.

Таблица №1
BILLS
название поля month_start_date subs_id revenue
описание Дата начала месяца ID абонента выручка за месяц
примеры значений 01.01.2016 1234567 500
01.02.2016 2345678 675
… … …

Таблица №2
SUBSCRIBERS
название поля filial_id subs_id rate_plan_id segment
описание ID филиала ID абонента ID тарифа название сегмента
примеры значений 1 1234567 44 B2B
2 2345678 554 B2C
… … … …
...
Рейтинг: 0 / 0
Объединение двух таблиц с датами
    #39873808
Kudrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jpeg таблиц

Модератор: исходные данные прикладывайте в виде скриптов, а не скриншотов

Модератор: Вложение удалено.
...
Рейтинг: 0 / 0
Объединение двух таблиц с датами
    #39876021
nenastik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kudrik,

примерно такой запрос будет:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT 
	s.filial_id AS 'ID филиала', 
	SUM(b.revenue) AS 'Сумма выручки'
FROM BILLS B
INNER JOIN SUBSCRIBERS S ON B.subs_id = S.subs_id
WHERE b.month_start_date >= '2017-01-01T00:00:00'
	AND b.month_start_date <= '2017-02-01T00:00:00'
GROUP BY s.filial_id


Если нужно деление по сегментам, то группируем по s.segment.

Можно группировать сразу и по тому, и по другому:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
	s.filial_id AS 'ID филиала', 
	s.segment AS 'Сегмент',
	SUM(b.revenue) AS 'Сумма выручки'
FROM BILLS B
INNER JOIN SUBSCRIBERS S ON B.subs_id = S.subs_id
WHERE b.month_start_date >= '2017-01-01T00:00:00'
	AND b.month_start_date <= '2017-02-01T00:00:00'
GROUP BY s.filial_id, s.segment


Однако тут недостаточно данных, чтобы определить, какая логика будет верна:
Код: sql
1.
GROUP BY s.filial_id, s.segment

или же
Код: sql
1.
GROUP BY s.segment, s.filial_id

т.к. неясно, что является делением более высокого уровня - сегмент или филиал.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение двух таблиц с датами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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