我有一个名为logs的表,其中包含技术人员按日期为医生所做的工作。它包含字段: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循环遍历记录集日期,以查看该技术人员在该日期是否有其他医生。这似乎有很长的路要走,但可能是唯一的解决方案。
发布于 2013-03-24 21:32:29
计算子查询中的医生数量,并将结果连接回:
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_idhttps://stackoverflow.com/questions/15598808
复制相似问题