Запрос на выборку mysql

Вывести посещения месяца с полной информацией врача с наименьшим количеством посещений за определенный период.

В общем, я написал запрос, который выводит врачей и посещения за определенный период

select visit_id, 
        pets.name as pet_name,
        concat(first_name, ' ', last_name) as vet_name, 
        visit_date,
        visits.description,
        services.name,
        price
from visits
join vets on visits.vet_id = vets.id
join pets on visits.pet_id = pets.id
join visit_details on visits.id = visit_details.visit_id
join services on visit_details.service_id = services.id
where visit_date between '2019-02-10' and '2019-03-02'
order by visit_date, price

Вот что получил

введите сюда описание изображения

как из этих записей оставить только те фамилии (vet_name) которых наименьшее количество?

Вот вся схема базы, но все таблицы я уже объеденил в запрос введите сюда описание изображения


Ответы (1 шт):

Автор решения: HackerU

Не запускал, так как у меня нет данных, но выглядеть это должно приблизительно так:

create view view1 as
select visit_id, 
        pets.name as pet_name,
        concat(first_name, ' ', last_name) as vet_name, 
        visit_date,
        visits.description,
        services.name,
        price
from visits
join vets on visits.vet_id = vets.id
join pets on visits.pet_id = pets.id
join visit_details on visits.id = visit_details.visit_id
join services on visit_details.service_id = services.id
where visit_date between '2019-02-10' and '2019-03-02'
order by visit_date, price;

create table table1 as
select 
  vet_name, 
  count(vet_name) as cnt
from view1
group by vet_name;

create table table2 as
select 
  vet_name
from table1
where cnt = (select min(cnt) from table1);

select vet_name 
from table1
where vet_name in (select vet_name from table2);
→ Ссылка