计算高于该类别平均价格的每个类别的项目

pxy2qtax  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(360)

使用postgresql 12.2
我正在处理一个表,表中有餐号(特定餐例)、类型(烹饪类型,如意大利菜、日本菜等)、客户id、餐价等列。
我成功地使用windows函数获得了每种烹饪类型的所有项目的列表,高于该类型的平均价格:

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

我试着扩展它来计算每种类型的用餐ID:

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

但我收到了错误消息:“error:列“m.meat\u id”必须出现在group by子句中,或用于聚合函数第1行:select m.*,count(meat\u id)”
我不确定是否有解决办法。
谢谢您!!

e5nqia27

e5nqia271#

我想你想要:

select type, count(*) no_meals_over_average
from (
    select 
        m.*, 
        avg(price) over (partition by type) as avg_price_type
    from meals m
) m
where price > avg_price_type
group by type

相关问题