Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 可以在查询中保留分数吗?_Sql_Google Bigquery - Fatal编程技术网

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

Sql 可以在查询中保留分数吗?,sql,google-bigquery,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 p

我正在寻找一种在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

或者我需要使用两列来获得多个聚合行的平均值吗?

获得平均值不需要两列,但如果要显示为分数,则需要两个数字。不过,它们不需要在两列中

    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;

显然,每行都需要计数和合计!您是将其存储在两列中还是一列中(例如,作为结构)完全取决于您。作为选项,您可以为每一行设置avg和count或total,这样您就可以重新计算缺少的属性这更像是一个数学问题,而不是一个编程问题:是的,您需要两列。