我有一个称为日志的表,其中包含技术人员按日期为医生完成的工作。
它包含以下字段: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遍历记录集日期以查看该技术人员在该日期是否有其他医生在工作。这似乎很漫长,但可能是唯一的解决方案。

最佳答案

计算子查询中的医生人数,然后将结果加入:

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

关于mysql - MySQL查询付款,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15598808/

10-10 17:42
查看更多