我对Postgresql非常陌生。我有一张看起来像这样的桌子
NAME GPA SUBJECT
BEN 3.5 MATH
BEN 3.7 BIOLOGY
KATE 3.7 MATH
KATE 3.7 BIOLOGY
一个查询为我提供了所有科目的每个人的平均gpa。
select avg(gpa) from table;
结果:
AVGALLGPA
3.8
另一个查询给出每个人的平均gpa。
select avg(gpa) from table group by name;
结果:
NAME AVGGPA
BEN 3.78
KATE 3.83
现在我正在编写一个查询,该查询计算出有多少学生的平均水平好于总体平均水平。
select
count(case when avg(gpa)> avgallgpa then 1
else null end)
from table;
如何将前一个查询的结果(avgallgpa)传递到后一个查询?
答案 0 :(得分:1)
select count(*) from (
select name from the_table
group by name
having avg(gpa) > (select avg(gpa) from the_table )
) t
答案 1 :(得分:0)
您可以使用子查询。
select COUNT(*) from table
group by name having
avg(gpa) > (select avg(gpa) from table);