Sql 错误:列";g、 开始日期;必须出现在GROUP BY子句中或在聚合函数中使用

Sql 错误:列";g、 开始日期;必须出现在GROUP BY子句中或在聚合函数中使用,sql,postgresql,Sql,Postgresql,给我10行我想要的数据 然而 select * FROM player_game_stats pgs INNER JOIN games g ON pgs.game_id = g.id where pgs.player_id=265 and (g.part_of_season='REGULAR' or g.part_of_season='BUBBLE') order by start_date desc limit 10; 给我一个错误的sql错误:列“g.start_date”必须出现在GRO

给我10行我想要的数据

然而

select *
FROM player_game_stats pgs INNER JOIN games g ON pgs.game_id = g.id where pgs.player_id=265
and (g.part_of_season='REGULAR' or g.part_of_season='BUBBLE') order by start_date desc limit 10;
给我一个错误的sql错误:列“g.start_date”必须出现在GROUP BY子句中,或者在聚合函数中使用

为什么这是一个问题?我如何解决它

我要按开始日期的顺序,取前10名,然后平均这些数字

您需要一个派生表来执行此操作:

select avg(points)
FROM player_game_stats pgs INNER JOIN games g ON pgs.game_id = g.id where pgs.player_id=265
and (g.part_of_season='REGULAR' or g.part_of_season='BUBBLE') order by start_date desc limit 10;

哪些表包含<代码>点数列?如果您只获得一个值,为什么要排序?@a_horse_with_no_name table player_game_stats包含点数,而table games包含start_date如上所述,没有分组依据的AVG()查询将只返回1行。无需使用ORDER BY。@HoneyBadger我希望它按开始日期的顺序排列,取前10名,然后平均这些数字
select avg(points)
from (
  select pgs.points
  FROM player_game_stats pgs 
    JOIN games g ON pgs.game_id = g.id 
  where pgs.player_id=265
    and g.part_of_season IN ('REGULAR', 'BUBBLE') 
  order by start_date desc 
  limit 10
) t;