【问题标题】:How can I get the average of a group of items in SQL?如何获得 SQL 中一组项目的平均值?
【发布时间】:2019-06-28 14:50:52
【问题描述】:

我有一张满是地区的桌子和一张满是物品、价格和地区的桌子。我想获得我拥有的每个地区的平均价格,然后当我选择所有项目时,我希望能够看到该项目地区的平均价格。

我的项目表如下所示:

Item Id | Price | District
---------------------------
   1    |   12  | North
   2    |   17  | North
   3    |   9   | East
   4    |   13  | West
   5    |   14  | East

我希望它在查询后返回:

Item ID | District | AVG District Price
--
1       | North    | 14.5
2       | North    | 14.5
3       | East     | 11.5

等等。有什么建议么?

【问题讨论】:

  • 我没有看到任何证据表明您到目前为止已经尝试过什么?
  • 你确定你的预期结果吗?
  • @forpas 是的,这就是我想要的。我希望能够查看每件商品的平均地区价格。
  • @declac 。 . .如果选择所有项目,为什么结果集是三行而样本数据是五行?
  • @GordonLinoff 正如我在问题中所说的“等等”,作为我的实际表格,它有 3000 个值,这只是我想要得到的一个例子。

标签: sql postgresql average


【解决方案1】:

根据您的描述,您似乎想要一个窗口功能:

select t.*,
       avg(price) over (partition by district) as avg_district_price
from t;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2018-11-22
    相关资源
    最近更新 更多