簡體   English   中英

SQL-如何獲取每個不同值的計數?

[英]SQL - How to get the count of each distinct value?

我有3張桌子

 **room**
    room_id | nurse_needed
    ----------------------
    1       | 2
    2       | 3
    3       | 1

   **doctor_schedule**
    doctor_schedule_id| room_id
    ---------------------------
           1          | 1
           2          | 2
           3          | 3

 *nurse_schedule*
    nurse_schedule_id | doctor_schedule_id
    --------------------------------------
    1                 |         1         
    2                 |         1         
    3                 |         2         

每個房間需要一名護士,一名醫生在該房間工作,一名護士按照醫生的時間表工作。 我想算一下每個房間有多少護士。 結果應為:

room_id     | nurse_needed|nurse_have_in_room
---------------------------------------------
    1       | 2           | 2
    2       | 3           | 1
    3       | 1           | 0

嗯。

select r.*,
       (select count(*)
        from doctor_schedule ds join
             nurse_schedule ns
             on ds.doctor_schedule_id = ns.doctor_schedule_id
        where ds.room_id = r.room_id
       ) as nurse_have_in_room
from room r;
select room.*,
(select count(*) from 
dotor_schedule docs,
nurse_schedule nurs
where docs.doctor_schedule_id=nurs.dcotor_schedule_id 
   group by docs.room_id) as nurse_have_in_room
from room;

 Result of join on doctor_schedule_id between doctor_schedule and  
 nurse_schedule

nurse_schedule_id | doctor_schedule_id   room_id
--------------------------------------+------------
1                 |         1         |    1
2                 |         1         |    1
3                 |         2         |    2

We group by room_id and then get the result.
select r.room_id, 
r.nurse_needed, 
ns.nurses_scheduled,
ns.dist_nurses_scheduled
from room r
left join (select ds.room_id, 
           count(1) nurses_schedule,
           count(distinct ns.nurse_schedule_id) dist_nurses_scheduled
           from doctor_schedule ds
           join nurse_schedule ns
           on ds.doctor_schedule_id  = ns.doctor_schedule_id 
           group by ds.room_id) as ns
on r.room_id = ns.room_id

左加入,以便您找到沒有安排護士的房間。
如果需要,請計數(distinct ns.nurse_schedule_id),以查看有多少不同的護士組成該計數。

通常,您也有時間組件。 類似於“其中r.roomdate = ns.date”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM