Сложные запросы Sql
recordid | patientid | doctorid | dateofrecord
----------+-----------+----------+--------------
1 | 1 | 2 | 2020-02-01
2 | 2 | 1 | 2020-05-12
3 | 3 | 2 | 2020-12-23
4 | 1 | 3 | 2020-04-01
5 | 3 | 1 | 2020-11-02
6 | 1 | 3 | 2020-02-01
7 | 3 | 4 | 2020-02-01
8 | 4 | 4 | 2020-05-12
9 | 5 | 2 | 2020-12-23
10 | 1 | 1 | 2020-04-01
id | firstname | lastname | speciality | dateofbirth | nurseid
----+-----------+--------------+------------+-------------+---------
1 | Vitalii | Surkov | Ortoped | 2001-01-13 | 1
2 | Andriy | Kolomiets | Psyholog | 2000-04-19 | 2
3 | Doctor | Komarovskiy | Pediatr | 1945-04-09 | 3
4 | Taras | Shevchenko | Okulist | 1932-12-03 | 4
5 | Oleksandr | Nechiporenko | Hirurg | 1984-10-10 | 5
Определить врачей, количество записей в которых были выше среднего.как такое реализовать ?
Ответы (1 шт):
Автор решения: Dmitriy Novikov
→ Ссылка
Если я вас верно понял то вы хотите узнать тех врачей у которых записей больше чем в среднем по каждому врачу, вот для примера, не самый лучший вариант, тем не менее, скажите какая у вас СУБД? Есть ли там оконные функции? С их помощью можно упростить.
select *
from table_2
where id in (select doctorid
from table_1
group by doctorid
having count(distinct recordid) > (select avg(t1.count_visits)
from(select doctorid, count(distinct recordid) as count_visits
from table_1
group by doctorid)t1))