MySQL: странное поведение запроса - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть три следующих запроса:

Этот запрос возвращает 427

select count(distinct patient_id) from patient_visits where lower(gender) = 'male';

Этот запрос возвращает 272

select count(distinct patient_id) from patient_visits where lower(gender) = 'female';

Оба следующих запроса возвращают 687

select count(distinct patient_id) from patient_visits where lower(gender) in ('male', 'female');
select count(distinct patient_id) from patient_visits where lower(gender) = 'male' or lower(gender) = 'female';

Почему результат последних запросов не равен 427 + 272 = 699? Что мне здесь не хватает?

1 Ответ

3 голосов
/ 16 апреля 2020

У некоторых пациентов в качестве пола указывается как «мужской», так и «женский». Вы можете найти их:

select patient_id
from patient_visits
where lower(gender) in ('male', 'female')
group by patient_id
having count(distinct lower(gender)) = 2;

Обратите внимание, что в медицинских учреждениях вы можете иметь дело с более чем двумя полами - на самом деле, значительно больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...