正在筛选分区中的值



我有一个收入表的收入值数据集。

我需要计算当前日期前60天每天的标准偏差。当计算标准偏差时,我按如下方式运行它:

SELECT
[Date],Brand,[Country],[Marketing Channel],
STDEV(Revenue) OVER (PARTITION BY Brand, Country,[Marketing Channel] 
ORDER BY [Date] ROWS BETWEEN 2 PRECEDING and 1 PRECEDING) 
as STD
FROM RevTable

问题是分区内的极值会使标准偏差向上或向下倾斜。我希望过滤分区本身中的极值。

我如何过滤掉这种结构中的极值(基于百分比的过滤是我想要的)?

国家>收入加拿大3578834美元社交网络>SEO>加拿大SEO社交网络<257美元>荷兰SEO加拿大SEO<2418136美元>加拿大>荷兰SEO>加拿大SEO<22231254美元>加拿大$-//tr>荷兰SEO>加拿大SEO加拿大<177美元>荷兰SEO>社交网络$-//tr>加拿大SEO<2096472>加拿大>荷兰SEO>荷兰$-//tr>加拿大SEO<2962476美元>加拿大>荷兰SEO>加拿大SEO>加拿大<156美元>荷兰SEO>荷兰$-//tr>加拿大SEO社交网络<153美元>荷兰SEO社交网络$-//tr>加拿大SEO>加拿大>荷兰SEO社交网络>加拿大SEO社交网络<275美元>SEO$725954//tr>
日期品牌营销渠道
2021年1月FunGamesSEO
2021年1月1日FunGames加拿大90000美元
2021年1月1日FunGames荷兰682943美元
2021年1月2日FunGames3731849美元
2021年1月2日FunGames加拿大
2021年1月2日FunGames627272美元
2021年1月3日FunGames
2021年1月3日FunGames社交网络40美元
2021年1月3日FunGames479642美元
2021年4月1日FunGames
2021年4月1日FunGames社交网络
2021年4月1日FunGames635715美元
2021年5月1日FunGames2686366美元
2021年5月1日FunGames社交网络
2021年5月1日FunGames499026美元
2021年5月1日FunGames荷兰
2021年6月1日FunGames
2021年6月1日FunGames社交网络465美元
2021年6月1日FunGames653359美元
2021年6月1日FunGames社交网络
2021年7月1日FunGames
2021年7月1日FunGames社交网络663美元
2021年7月1日FunGames$747990
2021年8月1日FunGames3092163美元
2021年8月1日FunGames社交网络
2021年8月1日FunGames655688美元
2021年8月1日FunGames社交网络
2021年9月1日FunGames3110117美元
2021年9月1日FunGames加拿大
2021年9月1日FunGames571313美元
2021年9月1日FunGames荷兰
2021年10月1日FunGames3024675美元
2021年10月1日FunGames社交网络68美元
2021年10月1日FunGames462699美元
2021年10月1日FunGames荷兰563美元
2021年11月1日FunGames2552153美元
2021年11月1日FunGames加拿大
2021年11月1日FunGames荷兰

你没有解释什么"极值";是但是您可以只使用CASE表达式。例如,如果您只想要介于10和100之间的值:

SELECT rt.*
STDEV(CASE WHEN Revenue >= 10 AND Revenue <= 100 THEN Revenue END) OVER
(PARTITION BY Brand, Country, [Marketing Channel] 
ORDER BY [Date]
ROWS BETWEEN 2 PRECEDING and 1 PRECEDING
) as STD
FROM RevTable rt ;

与大多数聚合和窗口函数一样,STDEV()忽略NULL值。

相关内容

  • 没有找到相关文章

最新更新