2015-11-25 2 views
1

Я хочу получить 12-недельное среднее число продаж по дням (IE 12 недель стоит понедельников ...) , но я не хочу иметь нулевые значения, которые могут возникнуть из-за закрытия магазина , Example of 12 Weeks with Zero'sИсключить ноль из среднего результата

Я написал сценарий, чтобы попытаться исключить Зеро

select 
de.[Restaurant Name] 
,dd.[DayNameOfWeek] 
,dd.[FinancialWC] 
,AVG([Net]) OVER (PARTITION BY dw.[RedCatID], dd.DayNameOfWeek 
ORDER BY dw.[RedCatID], dd.[FullDate] ROWS 11 PRECEDING) as [12 Week] 

from Daily_Sales_Summary dw 
inner join Restaurant_View de on de.RedCatID = dw.[RedCatID] 
inner join DimDate dd on dd.[DateKey] = dw.[DateKey] 
where [net] <> '0' 
group by de.[Restaurant Name] 
    ,dw.[RedCatID] 
    ,dd.[DayNameOfWeek] 
    ,dd.[FullDate] 
    ,dd.[FinancialWC],[Net] 
order by [Restaurant Name] asc 

Это действительно давал мне средние Я хотел, но не дали никаких результатов для дней с нулевым значением

Query Results showing missing dates

Как я бы сделал это, не пропуская недель с нулевыми нулями? Я рад, что он вернется на лишнюю неделю, если вместо него исключить нуль, если это более простое решение.

ответ

0

Нужно быть немного креативным здесь, чтобы включать строки, но не считать их в среднем , Попробуйте код ниже и посмотрите, работает ли он. Я его не тестировал. В принципе, то, что делает переопределяет знаменатель расчета, чтобы дать количество строк, где [NET] <> 0
EDIT: Найдено простое решение, чем то, что я первоначально отправил

select 
de.[Restaurant Name] 
,dd.[DayNameOfWeek] 
,dd.[FinancialWC] 
,avg(nullif([Net],0)) OVER (PARTITION BY dw.[RedCatID], dd.DayNameOfWeek 
ORDER BY dw.[RedCatID], dd.[FullDate] ROWS 11 PRECEDING) 

as [12 Week] 

from Daily_Sales_Summary dw 
inner join Restaurant_View de on de.RedCatID = dw.[RedCatID] 
inner join DimDate dd on dd.[DateKey] = dw.[DateKey] 
group by de.[Restaurant Name] 
    ,dw.[RedCatID] 
    ,dd.[DayNameOfWeek] 
    ,dd.[FullDate] 
    ,dd.[FinancialWC],[Net] 
order by [Restaurant Name] asc 
Смежные вопросы