我有一个用户姓名和成绩的表格
CREATE TABLE grades (name varchar(100), grade integer);
insert into grades
values
('Bob', 12),
('Bob', 13),
('Bob', 23),
('Bob', 17),
('James', 15),
('James', 27),
('Nick ', 18),
('Nick ', 16),
('Nick ', 22),
('Nick ', 32),
('Nick ', 19);
我想要一个按名字分组的输出表格,包括每个名字的平均成绩和第n低的值。
我尝试使用窗口函数 nth_value(),但在执行查询时出现错误(这里 n = 2)。
select name, avg(grade), nth_value(grade, 2) over(partition by name
order by grade
Range BETWEEN
UNBOUNDED PRECEDING AND
UNBOUNDED FOLLOWING)
from grades group by name;
错误和警告: 42803:列“grades.grade”必须出现在GROUP BY子句中或用于聚合函数。
正确的查询语句是什么?