SQL-запрос для сравнения определенного столбца со средним значением того же столбца - PullRequest
0 голосов
/ 27 августа 2018

Моя схема выглядит следующим образом

doctor (doctor_name, residence_address, postal_code, year_experience) 
works (doctor_name, branch_name, annual_pay) 
branch (branch_name, branch_address, postal_code) 
patient (patient_name, doctor_name, branch_name) 

Меня попросили получить doctor_name , чья годовая заработная плата превышает среднюю стоимость всех врачей в филиале с именем "Singapore"

Как мне это сделать в SQL-запросе.Я использую MySQL, и до сих пор я пробовал это

SELECT doctor.doctor_name, doctor.residence_address
FROM doctor INNER JOIN works on doctor.doctor_name = works.doctor_name
WHERE avg(annual_pay)< annual pay

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

Одним из возможных решений является

select doctor_name 
from 
    works,
    (select avg(annual_pay) ap from works where branch_name='Singapore') ap
where
    annual_pay>ap.ap
0 голосов
/ 27 августа 2018

Просто сравните оплату с вычисленным средним значением из подзапроса

SELECT doctor_name, annual_pay
FROM works 
WHERE annual_pay > (SELECT AVG(annual_pay) 
                    FROM works 
                    WHERE branch_name = 'Singapore') 
  AND branch_name = 'Singapore'
0 голосов
/ 27 августа 2018

Попробуйте запрос ниже:

SELECT doctor_name
FROM doctor
INNER JOIN works ON doctor.doctor_name = works.doctor_name
WHERE annual_pay > (
        SELECT avg(annual_pay)
        FROM works
        )
    AND branch_name = 'Singapore'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...