0

我有一个名为日志的表,其中包含技术人员按日期为医生所做的工作。它包含字段:ref_doctor_id (doctor), technician_id (technician) and dos (date).
技术人员可以在特定日期为几位医生工作。对于每位医生,我需要了解技术人员在特定日期是否为其他医生做过工作,如果他做过,我需要知道他当天为多少医生做过工作。这是将费用分配给医生。

例如:
我正在工作,Doctor 6 (id=6)技术人员每天可以获得 100 美元。
5 日,他只为 6 号医生工作,所以 6 号医生的费用是 100 美元。
6 日,他为 6 号和 8 号医生工作,因此 6 号医生的费用为 50 美元。
7 日,他为 6 号、7 号和 8 号医生工作,因此 6 号医生的费用为 33.33 美元。
该期间医生的总费用为 183.33 美元。

我希望这足够清楚,我希望 SQL 可以解决这个问题。
先感谢您!

2013-03-05  6   16
2013-03-06  6   16
2013-03-06  8   16
2013-03-07  6   16
2013-03-07  8   16
2013-03-07  10  16

我的选择是选择包含医生 ID 和技术人员 ID 的记录,然后使用 PHP 循环遍历记录集日期以查看该技术人员在该日期是否有任何其他医生工作。这似乎是一个漫长的过程,但可能是唯一的解决方案。

4

1 回答 1

1

计算子查询中的医生数量并将结果重新加入:

select dos, technician_id, dt.numdocs
from t left outer join
     (select dos, technician_id, count(distinct ref_doctor_id) as numdocs
      from t
      group by dos, technician_id
     ) dt
     on dt.dos = t.dos and dt.technician_id = t.technician_id
where ref_doctor_id = 6
group by dos, technician_id
于 2013-03-24T13:32:28.593 回答