Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-如何获取每个不同值的计数?_Sql - Fatal编程技术网

SQL-如何获取每个不同值的计数?

SQL-如何获取每个不同值的计数?,sql,Sql,我有三张桌子 **room** room_id | nurse_needed ---------------------- 1 | 2 2 | 3 3 | 1 **doctor_schedule** doctor_schedule_id| room_id --------------------------- 1 | 1 2

我有三张桌子

 **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 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;
左键连接,以便找到没有安排护士的房间。
计数(不同的ns.nurse\u schedule\u id),如果需要,查看有多少不同的护士组成计数

通常你也有时间成分。类似于“where r.roomdate=ns.date”

左键连接,以便找到没有安排护士的房间。
计数(不同的ns.nurse\u schedule\u id),如果需要,查看有多少不同的护士组成计数

通常你也有时间成分。类似于“where r.roomdate=ns.date”

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