Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2018, 15:38   #1
akaflash
Новичок
Джуниор
 
Регистрация: 12.04.2018
Сообщений: 11
По умолчанию Помогите пожалуйста с Базой

Таблица контактов оператора 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 – кол-во уникальных выполненных обещаний.
Помогите пожалуйста. Если есть возможность с обоснованием.
akaflash вне форума Ответить с цитированием
Старый 12.04.2018, 15:41   #2
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Вы что нибудь попробовали сделать? в чем конкретно сложность? Склеить две таблицы наложить условия..
При склейки двух таблиц делайте DIFF_DATE между платежами и если оно +-2 дня делаем COUNT (можно в условие добавить)

Это учебная задание? Судя по всему база MSSQL? верно? обычно если студент учат на аксессе...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 12.04.2018 в 15:51.
Stanislav вне форума Ответить с цитированием
Старый 12.04.2018, 16:13   #3
akaflash
Новичок
Джуниор
 
Регистрация: 12.04.2018
Сообщений: 11
По умолчанию

Проблема состоит в том что я абсолютно в этом не разбираюсь, это одно из заданий которое мне скинули, со всеми остальными проблем не возникло, да это MSSQL. Если Вас не затруднит вы не могли бы мне подробнее расписать что нужно сделать, если же нет времени хотябы подсказать какую литературу необходимо прочесть.
akaflash вне форума Ответить с цитированием
Старый 12.04.2018, 16:28   #4
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Литературу не знаю, я так учился на оф сайте да на гугле.

Нужно склеить две таблицы: я сейчас примерно пишу:

Код:

SELECT 
    CASE 
        WHEN  T3.DIFF_DATE <= 2 THEN SUM(1) ELSE 0
    END AS CNT_PROMISH
FROM (
SELECT    
  T1.CaseID,
  DATEDIFF ( day, T1.ContactDate, T2.PayDate)  AS DIFF_DATE
 FROM dbo.Contacts T1 
LEFT JOIN dbo.Payments T2 ON T1.CaseID = T2.CaseID
WHERE T1.ContactResultID = 1
) T3


Я не претендую на правильность, возможно есть ошибки но в целом работать должно, правда я еще не выбрал
Цитата:
если есть несколько обещаний, которые попадают в промежуток dbo.Payments.PayDate +/-2 дня нужно взять только 1-но то, которое было поставлено оператором раньше.
но это сделать не сложно можно RANK например. Попробуйте сами.

Так это учебное задание или нет?
Цитата:
Проблема состоит в том что я абсолютно в этом не разбираюсь
как так получается что люди делают то в чем не разбираются?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 12.04.2018 в 16:44.
Stanislav вне форума Ответить с цитированием
Старый 12.04.2018, 17:09   #5
akaflash
Новичок
Джуниор
 
Регистрация: 12.04.2018
Сообщений: 11
По умолчанию

Это тест на сообеседовании, сказали будем все эти базы изучать, я этого всего не знаю, но изначально нужно решить данное задание, тоесть разобраться где как и в чем. Я не совсем понимаю куда нужно вставлять данный код. Я сейчас читаю литературу по акцесу, правильно? Вношу туда данные. А вот с кодами что делать я не совсем понимаю.
akaflash вне форума Ответить с цитированием
Старый 12.04.2018, 18:44   #6
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Поймите все очень сложно в Вашем случаи. Вы не знаете элементарных вещей, даже если я сделаю готовый SQL запрос, потрачу на это свое время, что Вам это даст? знаний у Вас не прибавиться от этого, это нужно просто понимать, заниматься и тратить много времени на практику чтобы научится и это касается не только SQL

Для начинающего это сложный запрос, учитывая что вообще ничего не знаете. Простите зачем вы пытаетесь пройти собеседование туда где не знаете ничего? даже если пройдете как работать?

Цитата:
Я сейчас читаю литературу по акцесу, правильно?
смотря через сколько у Вас собеседование.. если через год..

Цитата:
Я не совсем понимаю куда нужно вставлять данный код.
судя по всему у Вас нет знаний ни в одном языке программирования, иначе знали бы основы.

Нужно поставить SQL сервер, настроить создать таблицы, залить дамп ваших данных, и исполнить SQL запрос.

На какую должность претендуете?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 12.04.2018 в 18:51.
Stanislav вне форума Ответить с цитированием
Старый 13.04.2018, 10:29   #7
akaflash
Новичок
Джуниор
 
Регистрация: 12.04.2018
Сообщений: 11
По умолчанию

Я это все понимаю, должность аналитика баз данных. Я же Вам объяснил что там будет обучение, я сообщил что в sql я ноль, мне же дали это задание и сказали искать её решение, чтобы они поняли каковы мои навыки к обучаемости. Поэтому лучше я это выполню сейчас, пусть с чьейто помощью, но я хотя бы принцип пойму, и будет намного легче. Поэтому если у вас есть лишнее время помогите. Я сейчас установил ms sql читаю литературу о создании баз. сейчас буду вносить.
akaflash вне форума Ответить с цитированием
Старый 13.04.2018, 11:24   #8
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

У Вас дампы есть? Вам как дали в текстовом виде? или приложили файлы какие?
По поводу помощи обещать не могу, мне на работе SQL хватает, если будет желание я попробую.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 13.04.2018, 11:33   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

На таком запросе sql не выучить и знания не показать - достаточно сложный, нужно много чего знать и понимать. И толку даже если кто-то напишет?
Цитата:
должность аналитика баз данных
да уж ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.04.2018 в 11:42.
Аватар вне форума Ответить с цитированием
Старый 13.04.2018, 11:36   #10
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Я вот тоже не понимаю, если компания хочет проверить умения искать ПОНИМАЯ что люди не понимают и их надо обучать дают такие запросы? может они просто так набор объявляют вы им запросы пишите потом они говорят что никто не подошел? очень странная тема... что за контора сказать можете?

Цитата:
чтобы они поняли каковы мои навыки к обучаемости
я не вижу связи.. дали бы найти что такое SELECT )))
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 13.04.2018 в 11:45.
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите,пожалуйста,с базой данных на завтра!!! ЯН_КА Помощь студентам 4 25.12.2009 00:14
Помогите с Базой Данных Юлькин Общие вопросы C/C++ 8 14.04.2009 08:29
Помогите, пожалуйста, новичку с базой данных Oracle10g (в т.ч. миграция с Oracle8i) lexluther БД в Delphi 0 27.03.2007 12:03
Помогите с Базой Асцесс Matvey Фриланс 6 02.03.2007 18:01