powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста с Базой
8 сообщений из 8, страница 1 из 1
Помогите пожалуйста с Базой
    #39629237
akafash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица контактов оператора dbo.Contacts:
[CaseID] int, -- ид дела
[OperatorID] int, -- ид оператора (его уникальный номер)
[ContactDate] datetime, -- дата создания контакта
[ContactResultID] tinyint -- ид контакта, который создал оператор

Пример:

CaseID____OperatorID___ContactDate__________ContactResultID
1__________10_____2016-01-03 08:07:23.000______1
2__________11_____2016-01-03 08:16:32.000______2
1__________12_____2016-01-03 08:20:12.000______1
4__________13_____2016-01-03 08:20:16.000______3
5__________14_____2016-01-03 08:22:18.000______2
1__________15_____2016-01-03 08:24:36.000______4
2__________16_____2016-01-03 08:25:27.000______5
3__________17_____2016-01-03 08:26:20.000______1
9__________18_____2016-01-03 08:27:13.000______2
5__________19_____2016-01-03 08:28:32.000______3


Таблица платежей dbo.Payments:
[CaseID] int,
[PayDate] date,
[PaySum] float

CaseID___PayDate____PaySum
1_____03.01.2016___122121
2_____02.01.2016___12121
1_____03.01.2016___34
4_____04.01.2016___115
5_____05.01.2016___3
1_____06.01.2016___3
2_____07.01.2016___1212
3_____08.01.2016___3434
9_____09.01.2016___34
5_____10.01.2016___53344


Задание:
Посчитать кол-во уникальных выполненных обещаний за 2016 год в разрезе оператора dbo.Contacts.OperatorID.
ContactResultID=1 – это ид контакта «Обещание».
Выполненным обещанием считается, если дата соответствующего контакта оператора dbo.Contacts.[ContactDate] находится в промежутке dbo.Payments.PayDate +/-2 дня.

Примечание:
На одно и то же дело dbo.Contacts.CaseID обещание dbo.Contacts. ContactResultID =1 могут поставить несколько операторов dbo.Contacts.OperatorID,
поэтому, если есть несколько обещаний, которые попадают в промежуток dbo.Payments.PayDate +/-2 дня нужно взять только 1-но то, которое было поставлено оператором раньше.

Результат вывести в виде:
Operatorid___PTPCount
10________545
11________12154
12________122121
13________545
14________2323
15________45
16________56567
17________4545
18________2323
19________1212

Где PTPCount – кол-во уникальных выполненных обещаний.
Помогите пожалуйста. Если есть возможность с обоснованием.
...
Рейтинг: 0 / 0
Помогите пожалуйста с Базой
    #39629270
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что не получается?
...
Рейтинг: 0 / 0
Помогите пожалуйста с Базой
    #39629279
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
/*
Таблица контактов оператора dbo.Contacts:
[CaseID] int, -- ид дела
[OperatorID] int, -- ид оператора (его уникальный номер)
[ContactDate] datetime, -- дата создания контакта
[ContactResultID] tinyint -- ид контакта, который создал оператор


Таблица платежей dbo.Payments:
[CaseID] int,
[ContactDate] date,
[PaySum] float

Задание:
Посчитать кол-во уникальных выполненных обещаний за 2016 год в разрезе оператора dbo.Contacts.OperatorID.
ContactResultID=1 – это ид контакта «Обещание».
Выполненным обещанием считается, если дата соответствующего контакта оператора dbo.Contacts.[ContactDate] находится в промежутке dbo.Payments.PayDate +/-2 дня.

Примечание:
На одно и то же дело dbo.Contacts.CaseID обещание dbo.Contacts. ContactResultID =1 могут поставить несколько операторов dbo.Contacts.OperatorID,
поэтому, если есть несколько обещаний, которые попадают в промежуток dbo.Payments.PayDate +/-2 дня нужно взять только 1-но то, которое было поставлено оператором раньше.

*/

-- платежи с привязкой к оператору
with c as ( select * from dbo.Contacts where ContactResultID = 1 )
   , p as ( select * from dbo.Payments )
  select p.*, c.[OperatorID]
    from p
         outer apply( select top(1) * from c where c.[CaseID] = p.[CaseID] and c.[ContactDate] between dateadd( day, 2, p.[ContactDate] ) and dateadd( day, 2, p.[ContactDate] ) order by c.[ContactDate] asc ) as x
;

-- ну а дальше то, какие проблемы?
with c as ( select * from dbo.Contacts where ContactResultID = 1 )
   , p as ( select * from dbo.Payments )
   , pc as ( select p.*, c.[OperatorID]
                from p
                     cross apply( select top(1) * from c where c.[CaseID] = p.[CaseID] and c.[ContactDate] between dateadd( day, 2, p.[ContactDate] ) and dateadd( day, 2, p.[ContactDate] ) order by c.[ContactDate] asc ) as x
            )
  select [OperatorID], PTPCount  = count(*) from pc group by [OperatorID]
;

-- ой, чую я коллекторское агентство...
...
Рейтинг: 0 / 0
Помогите пожалуйста с Базой
    #39629284
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чорт, не прошел я тестирование...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
-- платежи с привязкой к оператору
with c as ( select * from dbo.Contacts where ContactResultID = 1 )
   , p as ( select * from dbo.Payments )
  select p.*, c.[OperatorID]
    from p
         outer apply( select top(1) * from c where c.[CaseID] = p.[CaseID] and c.[ContactDate] between dateadd( day, - 2, p.[ContactDate] ) and dateadd( day, 2, p.[ContactDate] ) order by c.[ContactDate] asc ) as с
;

-- ну а дальше то, какие проблемы?
with c as ( select * from dbo.Contacts where ContactResultID = 1 )
   , p as ( select * from dbo.Payments )
   , pc as ( select p.*, c.[OperatorID]
                from p
                     cross apply( select top(1) * from c where c.[CaseID] = p.[CaseID] and c.[ContactDate] between dateadd( day, - 2, p.[ContactDate] ) and dateadd( day, 2, p.[ContactDate] ) order by c.[ContactDate] asc ) as с
            )
  select [OperatorID], PTPCount  = count(*) from pc group by [OperatorID]
;
...
Рейтинг: 0 / 0
Помогите пожалуйста с Базой
    #39629346
akafash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,
Это тест на сообеседовании, сказали будем все эти базы изучать, я этого всего не знаю, но изначально нужно решить данное задание, тоесть разобраться где как и в чем. Я не совсем понимаю куда нужно вставлять данный код. Я сейчас читаю литературу по акцесу, правильно? Вношу туда данные. А вот с кодами что делать я не совсем понимаю.
...
Рейтинг: 0 / 0
Помогите пожалуйста с Базой
    #39629349
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akafashЯ сейчас читаю литературу по акцесу, правильно? Вношу туда данные. А вот с кодами что делать я не совсем понимаю.Если у вас база данных в Аксессе, то зачем вы морочите людям голову и задаете вопрос в ветке по MSSQL?
...
Рейтинг: 0 / 0
Помогите пожалуйста с Базой
    #39629386
akafash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич, Не в акцессе она, просто я не имею представления что именно делать и копаю во все стороны. Объясните в чем работать пожалуйста. И что там сделать?
...
Рейтинг: 0 / 0
Помогите пожалуйста с Базой
    #39629571
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akafash,

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


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