我´我试图对以下数据做一些分析
WeekDay Date Count
5 06/09/2018 20
6 07/09/2018 Null
7 08/09/2018 19
1 09/09/2018 16
2 10/09/2018 17
3 11/09/2018 24
4 12/09/2018 25
5 13/09/2018 24
6 14/09/2018 23
7 15/09/2018 23
1 16/09/2018 9
2 17/09/2018 23
3 18/09/2018 33
4 19/09/2018 22
5 20/09/2018 31
6 21/09/2018 17
7 22/09/2018 10
1 23/09/2018 12
2 24/09/2018 26
3 25/09/2018 29
4 26/09/2018 27
5 27/09/2018 24
6 28/09/2018 29
7 29/09/2018 27
1 30/09/2018 19
2 01/10/2018 26
3 02/10/2018 39
4 03/10/2018 32
5 04/10/2018 37
6 05/10/2018 Null
7 06/10/2018 26
1 07/10/2018 11
2 08/10/2018 32
3 09/10/2018 41
4 10/10/2018 37
5 11/10/2018 25
6 12/10/2018 20
我要解决的问题是:我要创建一个表,其中包含与该天相关的最后3个相同工作日的平均值。但是,当工作日中有空值时,我想忽略它,只对剩余的数字进行平均,而不是将空值计为0。我在这里举个例子:
此表中的日期为日/月/年:)
例:在2018年10月12日,我需要2018年10月5日的平均值;28/09/2018; 21/09/2018. 这是与2018年10月12日相同的最后3个工作日(6个)。它们的值为空;29; 17那么这个平均值的结果必须是23,因为我需要忽略空值,而不是15333。
我该怎么做?
4条答案
按热度按时间iih3973s1#
首先,您需要在数据中获得该工作日的示例数,因为您只需要最后3个相同的工作日
从这里,你可以得到你想要的。根据您的解释,您不需要为count过滤掉空值。仅仅做avg()聚合就可以忽略它。
qq24tv8q2#
z2acfund3#
这个
count()
函数忽略空值(即遇到空值时不递增),因此我建议您只需计算值,然后可能包含希望忽略的空值。例如。
sum(value)
大于等于46,且count(value)
=2,平均值为23.0(和avg(value)
也将返回23.0,因为它也忽略空值)你可以用
avg(count)
并得到相同的结果。我真的希望你不要用
count
作为列名!我也建议你不要用date
作为列名。i、 e.避免使用sql术语作为名称。0aydgbwb4#
使用
IsNULL(Count,0)
在您的选择中