Sql 尝试设置子查询以将给定类别的平均价格与所有价格进行比较

Sql 尝试设置子查询以将给定类别的平均价格与所有价格进行比较,sql,postgresql,subquery,Sql,Postgresql,Subquery,使用Postgresql 12.2 我正在制作一张表,表中列有特定的用餐实例、烹饪类型、客户id、用餐价格等。共有6种烹饪类型意大利、日本等。我需要找到每种烹饪类型的平均价格,然后显示每种类型的特定用餐id的价格高于该类型的平均价格 当我尝试这个: select m1.* from meals m1 join (select avg(price) from meals group by type) average on meal_id=meal

使用Postgresql 12.2

我正在制作一张表,表中列有特定的用餐实例、烹饪类型、客户id、用餐价格等。共有6种烹饪类型意大利、日本等。我需要找到每种烹饪类型的平均价格,然后显示每种类型的特定用餐id的价格高于该类型的平均价格

当我尝试这个:

select m1.*  
 from meals m1  
 join (select avg(price) 
       from meals  
       group by type) average  
 on meal_id=meal_id  
 where price > average  
 group by type;
我收到错误消息:

错误:运算符不存在:整数>记录第7行:其中价格平均值

我不确定为什么会收到此错误消息。谢谢

使用窗口功能:

select m.*
from (select m.*, avg(price) over (partition by type) as type_price
      from meals m
     ) m
where price > type_price;

谢谢你的回答!以及向我介绍窗口函数:。非常感谢。@user13717038。如果这回答了你的问题,那么你应该接受这个答案——在这种情况下没有其他答案。