可以在查询中保留分数吗?
Posted
技术标签:
【中文标题】可以在查询中保留分数吗?【英文标题】:Possible to keep fraction in a query? 【发布时间】:2019-05-24 21:10:26 【问题描述】:我正在寻找一种将 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
或者我是否需要使用两列才能获得多个聚合行的平均值?
【问题讨论】:
显然你需要每行的计数和总计!您将它存储在两列还是一列中(例如作为结构)完全取决于您。作为选项,您可以为每行设置 avg 和 count 或 total - 这样您就可以重新计算缺失的属性 这是一个数学问题而不是编程问题:是的,你需要两列。 【参考方案1】:您不需要 2 列来获取平均值,但如果您想显示为分数,那么您将需要两个数字。不过,它们不需要在 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;
【讨论】:
以上是关于可以在查询中保留分数吗?的主要内容,如果未能解决你的问题,请参考以下文章