我需要构建分析sql查询,客户机应该在其中指定任何度量(特定列中的值求和)或维度(按特定列分组)。
假设我有一个包含列的表 hour
, dim_a
, dim_b
, metric_a
, metric_b
, metric_c
值显示在下面的csv中
hour,dim_a,dim_b,metric_a,metric_b
0,A,X,4,4
0,A,Y,4,24
0,B,Y,20,24
1,B,Y,21,35
1,A,Y,4,35
1,C,Y,10,35
2,B,Y,21,30
2,C,Y,3,30
2,A,Y,6,30
看一看 metric_b
. 如果值相同,则此度量总是相同的 hour
以及 dim_b
是一样的,不管 dim_a
. 例如:
1,B,Y,21,35
1,A,Y,4,35
1,C,Y,10,35
如果我们选择列 hour
, dim_b
, metric_b
取不同的值表如下所示:
hour,dim_b,metric_b
0,X,4
0,Y,24
1,Y,35
2,Y,30
通过这个值,所有的聚合 metric_b
应该这样做
我想通过特定维度对这个数据分组运行分析查询,并在涉及到 metric_b
.
当我想分组时 hour
, dim_a
, dim_b
,并查看度量 metric_a
以及 metric_b
. 预期结果是
hour,dim_a,dim_b,metric_a,metric_b
0,A,X,4,4
0,A,Y,4,24
0,B,Y,20,24
1,B,Y,21,35
1,A,Y,4,35
1,C,Y,10,35
2,B,Y,21,30
2,C,Y,3,30
2,A,Y,6,30
当我想分组时 dim_a
, dim_b
,并查看度量 metric_a
以及 metric_b
. 预期结果是
dim_a,dim_b,metric_a,metric_b
A,X,4,4
A,Y,14,89
B,Y,62,89
C,Y,13,89
的价值 metric_b
按89=24+35+30计算;4 = 4
当我想分组时 dim_b
,参见公制。 metric_a
以及 metric_b
. 预期结果是:
dim_b,metric_a,metric_b
X,4,4
Y,89,89
的价值 metric_b
按89=24+35+30计算;4 = 4
最后当我想分组时 dim_a
,参见公制。 metric_a
以及 metric_b
. 预期结果是:
dim_a,metric_a,metric_b
A,18,93
B,62,93
C,13,93
的价值 metric_b
按93=24+35+30+4计算
所以 metric_b
应该是 metric_b
但不接受账目 dim_a
作为一个分组列,但采取其他一切。有没有sql语法可以帮助我这么做?
此外,我想说的是,这些查询将在awsredshift上运行,共有20个度量和16维36列。那里将有多达1000亿行。
1条答案
按热度按时间tgabmvqs1#
对于2号:
对于3号:
对于4号: