可以在查询中保留分数吗?

时间:2019-05-24 21:10:26

标签: sql google-bigquery

我正在寻找一种将SQL中的平均值相加的方法。这是我拥有的数据的示例:

product      avg_price
phone        104.28
car          1000.00

我正在寻找类似这样的东西:

product      avg_price
[all]        544.27
phone        104.28
car          1000.00

我当前的操作方式是将计数和总和存储在两个不同的列中,例如:

product    cnt     total
phone      203     20,304.32
car        404     304,323.30

从中得到平均值。但是,我想知道在SQL中是否可能仅“保留分数”并能够根据需要添加它们。例如:

product      avg_price
[all]        [add the fractions]
phone        20,304.32 / 203
car          304,323.30 / 404

还是我需要使用两列才能获得多个聚合行的平均值?

1 个答案:

答案 0 :(得分:0)

您不需要2列即可获得平均值,但是如果要显示为小数,则需要两个数字。不过,它们不必分成两列。

    select product, sum(total) ||'/'||sum(count) 
    from table a
        join table b on a.product=b.product
    union
    select product, total ||'/'||count 
    from table a
        join table b on a.product=b.product;