использовать результат одного запроса в другом запросе - PullRequest
0 голосов
/ 09 сентября 2018

Я очень новичок в 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) из предыдущего запроса в более поздний запрос?

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Вы можете использовать подзапрос.

select COUNT(*) from table 
group by name having 
avg(gpa) > (select avg(gpa) from table);
0 голосов
/ 09 сентября 2018
 select count(*) from (
    select name from the_table 
    group by name
    having avg(gpa) > (select avg(gpa) from the_table )
) t
...