Как найти минимальный возраст из столбца дня рождения, но выбирайте только те, которые на 3 года старше минимального - PullRequest
0 голосов
/ 11 июля 2019

У меня есть таблица, ПАЦИЕНТ, у которой есть даты рождения. Мне нужно выполнить запрос, который возвращает только тех пациентов, которые на 3 года старше самого младшего.

Я пытаюсь найти хорошее вступительное руководство по вложенным SQL-операторам, потому что мой онлайн-класс ужасен.

Насколько я знаю:

SELECT Phone, Birthday
FROM PATIENT
WHERE Birthday >(
SELECT *
FROM PATIENT
GROUP BY Birthday
ORDER BY Birthday DESC
SELECT MIN(Birthday) AS MinAges
FROM PATIENT);

Ответы [ 4 ]

0 голосов
/ 12 июля 2019

Вы можете использовать подзапрос для получения самой старой даты рождения, а затем сравнения дат.Это выглядит так:

select p.*
from patient as p,
     (select max(birthday) as max_birthday
      from patient
     ) as m
where p.birthday <= dateadd("yyyy", -3, m.max_birthday) and
      p.birthday > dateadd("yyyy", -4, m.max_birthday);

Обратите внимание, что это ровно 3 года, в зависимости от дня вашего

0 голосов
/ 11 июля 2019

Здесь мы выбираем те два поля для пациента, где день рождения больше, чем вложенный выбор, где мы берем наименьший последний день рождения и добавляем к нему 3 года. Надеюсь, это указывает на правильное направление.

SELECT Phone, Birthday
FROM PATIENT
WHERE Birthday >(
SELECT DateAdd(yy, 3, Cast(MIN(Birthday) As datetime))
FROM PATIENT);
0 голосов
/ 12 июля 2019

Если на 3 года вы имеете в виду, что вы хотите, чтобы годы рождения имели разницу в 3, вы можете использовать функцию DateAdd():

select phone, birthday from patient
where year(DateAdd('yyyy', -3, birthday)) = (
  select year(min(birthday))
  from patient
)

или

select phone, birthday from patient
where year(birthday) - 3 = (
  select year(min(birthday))
  from patient
)
0 голосов
/ 11 июля 2019

Не гуглите «вложенные», это другое дело. Google "подзапросы".

SELECT Phone, Birthday
  FROM PATIENT
 WHERE Birthday - 2 > (
           SELECT MIN(Birthday)
             FROM PATIENT
           );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...