Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 разделение данных по критерию  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: разделение данных по критерию  [new]
Glebanski
Member

Откуда: Msk ->NL
Сообщений: 308
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]     Ответить | Цитировать Сообщить модератору
 Re: разделение данных по критерию  [new]
Glebanski
Member

Откуда: Msk ->NL
Сообщений: 308
Там еще group by [CustomerName],[ItemRelation],[DocumentYear]
внизу надо
5 июл 18, 17:37    [21546919]     Ответить | Цитировать Сообщить модератору
 Re: разделение данных по критерию  [new]
Kontox
Member

Откуда:
Сообщений: 146
А где у Вас в коде идет сравнение с 0,71?
5 июл 18, 17:57    [21547005]     Ответить | Цитировать Сообщить модератору
 Re: разделение данных по критерию  [new]
Glebanski
Member

Откуда: Msk ->NL
Сообщений: 308
Ну любезнейший, уж Count_Sales на Count_Total как-нить сами поделить сможете!
5 июл 18, 18:04    [21547030]     Ответить | Цитировать Сообщить модератору
 Re: разделение данных по критерию  [new]
u.eMeHTuk
Member

Откуда:
Сообщений: 5
Kontox,
"isPromo"
Okey, Axapta... ?
5 июл 18, 19:09    [21547221]     Ответить | Цитировать Сообщить модератору
 Re: разделение данных по критерию  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: разделение данных по критерию  [new]
Kontox
Member

Откуда:
Сообщений: 146
Kopelly , все ок, респект.
9 июл 18, 12:32    [21555747]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить