Возврат текущего местоположения из нескольких минимальных значений - PullRequest
0 голосов
/ 04 мая 2019

У меня есть 4 таблицы с уровнем образования, личными данными, текущим местоположением и доходом.Образование связано с личными данными, которые отдельно связаны с текущим местоположением (не спрашивайте почему, старая БД).Доход также связан с личными данными.

Я пытаюсь определить, где в настоящее время проживает человек с самым низким уровнем образования, но с самым высоким уровнем дохода.Возникает вопрос, что у меня около 30 человек с (одинаковым) самым низким уровнем образования и одинаковым уровнем дохода.

Текущий код выглядит следующим образом:

select  p.name,
        min(e.level),
        max(i.income),
        l.city
from    education as e
join    person_det as p
on      e.person_ID = p.ID
join    location as l
on      p.CityID = l.CityID
join    income as i
on      p.job_ID = i.job_id
Order by e.level ASC, i.income DESC;

Однако это толькоКажется, возвращается 1 человек, а не все люди, в которых я нуждаюсь.

Какие-либо предложения о том, как заставить это работать по нескольким критериям?

1 Ответ

1 голос
/ 04 мая 2019

Вы получаете только один ответ из-за min(e.level0).Вы можете попробовать отсортировать список по e.level ASC, i.income DESC и посмотреть на первые несколько элементов.

В противном случае, я думаю, вам нужно использовать вложенный запрос.Внутренний запрос определит min(e.level), а внешний запрос найдет записи, соответствующие min_e, упорядоченные в i.income DESC.Трудно напечатать другую информацию, кроме max i.income.

Попробуйте что-то вроде этого:

select p.name, e.level, i.income, l.city
from person as p
join education as e on e.person_ID=p.ID
join income as i on p.job_ID=i.job_id
join location as l on p.CityID=l.CityID
where e.level = (select min(level) from education)
order by i.income DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...