我有一张名为日志的表,其中包含技术人员按日期为医生所做的工作。
它包含字段: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循环记录日期,以查看该技术人员是否有其他医生在该日期工作过。这似乎是一个漫长的过程,但可能是唯一的解决方案。
答案 0 :(得分: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