Чтобы избежать путаницы, я изменю имена столбцов на:
visitor
стол, FK to employee id
: employee_in_charge_id
visit
таблица, FK to employee id
: employee_to_meet_id
Из вашего объяснения в комментариях вы ищете Сотрудника , который имеет большинство посещений , которые не проверены .
В случае, когда более 1 сотрудника имеют одинаковое максимальное количество посещений, которые не являются выездными, этот запрос перечисляет всех нескольких сотрудников:
SELECT * FROM
(
SELECT
r.employee_in_charge_id,
count(*) cnt,
rank() over (ORDER BY count(*) DESC)
FROM visit v
JOIN visitor r ON v.visitor_id = r.id
WHERE v.check_out_time IS NULL
GROUP BY r.employee_in_charge_id
) a
WHERE rank = 1;
Ссылка SQLFidle
ссылка: http://sqlfiddle.com/#!17/423d9/2
Примечание:
Для меня это звучит более правильно, если employee_in_charge_id
является частью таблицы visit
, а не visitor
таблицы. Я предполагаю, что для каждого visit
есть 1 сотрудник (A), который отвечает за посещение, а посетитель встречает 1 сотрудника (B). Таким образом, 1 посетитель может совершить несколько посещений, которые обрабатываются разными сотрудниками.
В любом случае, мой ответ выше основан на вашей оригинальной схеме.