我有三张 table
**room**
room_id | nurse_needed
----------------------
1 | 3
2 | 1
3 | 2
**doctor_schedule**
doctor_schedule_id| room_id | date |shift
-------------------------------------------------
1 | 1 |12-30-2016| 1
2 | 2 |12-31-2016| 2
3 | 3 |12-30-2016| 2
4 | 2 |12-30-2016| 2
*nurse_schedule*
nurse_schedule_id | doctor_schedule_id
--------------------------------------
1 | 1
2 | 1
3 | 3
病房每类配备一名医生,每类需要多名护士。护士按照医生的时间表工作。我想统计 12-30-2016
有多少类次没有足够的护士。结果应该是:
doctor_schedule_id| room_id | date |shift | nurse_needed|nurse_have_in_room
------------------------------------------------------------------------------
1 | 1 |12-30-2016| 1 | 3 | 2
3 | 3 |12-30-2016| 2 | 2 | 1
4 | 2 |12-30-2016| 2 | 1 | 0
最佳答案
您可以像这样INNER JOIN
所有表,并过滤掉所需护士数量小于或等于现有护士数量的表。
select d.doctor_schedule_id,
d.room_id,
d.date,
d.shift,
r.nurse_needed,
COUNT(distinct n.nurse_schedule_id) nurse_have_in_room
from doctor_schedule d
inner join room r on r.room_id = d.room_id
left outer join nurse_schedule n on d.doctor_schedule_id = n.doctor_schedule_id
where d.date = '12-30-2016'
group by d.doctor_schedule_id,
d.room_id,
d.date,
d.shift,
r.nurse_needed
having r.nurse_needed > COUNT(distinct n.nurse_schedule_id);
关于mysql - SQL - 获取带有条件的每个不同值的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41409376/