Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Kontox Member Откуда: Сообщений: 146 |
Подскажите, как мне разделить данные по критерию?/****** Скрипт для команды SelectTopNRows из среды SSMS ******/ SELECT [Dt] ,[CustomerName] ,[ItemRelation] ,[SaleCount] ,[DocumentNum] ,[DocumentYear] ,[IsPromo] ,[CustomerType] FROM [Action].[dbo].[FC] [IsPromo] имеет значения 0 и 1. Мне нужно разделить данные по количеству продаж по [SaleCount] для нулевой категории ispromo! например, по ispromo=0, 20 наблюдений, из них по [SaleCount] только 15 не нулевые, а 5 нулевых, не интересных. Рассчитаем коэффициент, делим общее число дней, на количество дней, где были не нулевые продажи. 15/20=0,75. Запрос должен делаться для страт(групп) [CustomerName]+[ItemRelation]+[DocumentYear] Так вот, если внутри той или иной страты такой коэффициент больше 0,71, то такие страты записать в таблицу mytab1 если меньше, то в mytab2 Как это сделать? |
5 июл 18, 17:17 [21546846] Ответить | Цитировать Сообщить модератору |
Glebanski Member Откуда: Msk ->NL Сообщений: 319 |
Kontox, Kontox, Ничего не проверял, но шото вроде этого должно сработать select [CustomerName],[ItemRelation],[DocumentYear], max(case when SalesPresent=1 then Count_Ex else NULL) as Count_Sales, sum(Count_Ex) as Count_total from ( select [CustomerName],[ItemRelation],[DocumentYear], case when SaleCount > 0 then 1 else 0 end as SalesPresent, count(*) as Count_Ex from FROM [Action].[dbo].[FC] group by [CustomerName],[ItemRelation],[DocumentYear], case when SaleCount > 0 then 1 else 0 end ) sub Наверно есть более офигительные варианты с XML-ом |
5 июл 18, 17:36 [21546914] Ответить | Цитировать Сообщить модератору |
Glebanski Member Откуда: Msk ->NL Сообщений: 319 |
Там еще group by [CustomerName],[ItemRelation],[DocumentYear] внизу надо |
5 июл 18, 17:37 [21546919] Ответить | Цитировать Сообщить модератору |
Kontox Member Откуда: Сообщений: 146 |
А где у Вас в коде идет сравнение с 0,71? |
5 июл 18, 17:57 [21547005] Ответить | Цитировать Сообщить модератору |
Glebanski Member Откуда: Msk ->NL Сообщений: 319 |
Ну любезнейший, уж Count_Sales на Count_Total как-нить сами поделить сможете! |
5 июл 18, 18:04 [21547030] Ответить | Цитировать Сообщить модератору |
u.eMeHTuk Member Откуда: Сообщений: 5 |
Kontox, "isPromo" Okey, Axapta... ? |
5 июл 18, 19:09 [21547221] Ответить | Цитировать Сообщить модератору |
Kopelly Member Откуда: Красноярск Сообщений: 289 |
with t as ( SELECT [Dt] ,[CustomerName] ,[ItemRelation] ,[SaleCount] ,[DocumentNum] ,[DocumentYear] ,[IsPromo] ,[CustomerType] ,1.0*(sum(sign(SaleCount)) Over (Partition by [CustomerName],[ItemRelation],[DocumentYear]))/ (count(*) Over (Partition by [CustomerName],[ItemRelation],[DocumentYear])) as koef FROM [Action].[dbo].[FC] ) Insert into mytab1 Select [Dt] ,[CustomerName] ,[ItemRelation] ,[SaleCount] ,[DocumentNum] ,[DocumentYear] ,[IsPromo] ,[CustomerType] From t Where koef > 0.71 |
6 июл 18, 04:47 [21547849] Ответить | Цитировать Сообщить модератору |
Kontox Member Откуда: Сообщений: 146 |
Kopelly , все ок, респект. |
9 июл 18, 12:32 [21555747] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |