mousau Ответов: 1

Sql-запрос для получения сведений о клиентах в определенные дни недели


Всем Привет
Необходима помощь с использованием sql-запроса для получения сведений о тех клиентах, которые активны в течение любых пяти дней недели:-

Описание сценария:-
CustName	     Frequency  PurchaseDate	  Weekday


Mrs.Graciela 	        1	8/12/2016	Friday
Mrs.Kiley Cald	        1	8/12/2016	Friday
Ms.DonetteFold	        1	8/12/2016	Friday
Ms.Maya Kumar	        2       8/12/2016	Friday
Mr.Sage Wieser	        1	8/22/2016	Monday
Mr.Yuki Whobrey	        1       8/22/2016	Monday
Mr.Yuki Whobrey	        1	8/23/2016	Tuesday
Mr.Yuki Whobrey	        1	8/24/2016	Wednesday
Mr.Yuki Whobrey	        1	8/25/2016	Thursday
Mr.Yuki Whobrey	        1	8/26/2016	Friday

Необходимость отображения (например,):-
All the "Mr.Yuki Whobrey" details since he was active during the five days in the week.


Что я уже пробовал:

select CustName,Count(CustName),PurchaseDate,DATENAME(dw,PurchaseDate) 
 from [CustmrSrc] where DATENAME(dw,PurchaseDate) in ('Monday','Tuesday', 'Wednesday','Thursday','Friday') 
 Group By CustName, PurchaseDate

Однако этот запрос кажется недостаточным для извлечения соответствующих записей:(
Прошу помощи в этом деле.
С уважением

0x01AA

Вы должны сгруппироваться по неделям года

1 Ответов

Рейтинг:
4

OriginalGriff

Попробуй:

SELECT * FROM MYTable a
JOIN (SELECT CustName FROM MYTable
      GROUP BY CUSTName, DATEPART(ISO_WEEK,PurchaseDate)
      HAVING COUNT(PurchaseDate) >= 5) b
ON a.CustName = b.CustName


mousau

Привет Грифф
Большое спасибо за ответ. Решение работает совершенно нормально:):)
Спасибо
С уважением

OriginalGriff

Пожалуйста!

mousau

Привет Грифф
Есть вопрос:-
Две версии идентичных запросов однако результаты варьируются из за изменений функций:-

выберите CustName, Count(CustName)
от [CustmrSrc]
Группа по CustName, DATENAME(dw, PurchaseDate)
имея Count (PurchaseDate)>=5

и
внутренний запрос, как описано вами:-

Выберите CustName из [CustmrSrc]
Группа по CUSTName, DATEPART(ISO_WEEK, PurchaseDate)
Имея COUNT (PurchaseDate) >= 5


Второй запрос повторяет результат, однако первый запрос ничего не возвращает:O почему?

С уважением

OriginalGriff

Потому что DW возвращает день недели, а ISO_WEEK возвращается "неделя года" число.

Maciej Los

ISO_WEEK параметр DATEPART функция творит волшебство!
5ед!

mousau

Привет Мацей
Спасибо за ответ. Я должен погуглить на это больше:)
Спасибо
С уважением

mousau

Привет Грифф
вы хотите сказать...если дата 8/22/2016, то ISO_WEEK вернет номер недели, на который приходится 22 августа, верно??
Спасибо
С уважением

OriginalGriff

Именно так!

mousau

Всем Привет
Понял магию ... функции.Большое спасибо
Спасибо
С уважением

OriginalGriff

Пожалуйста!