我們根據預計完成的工作量除以付給的小時數計算獎金。我們系統中有一個人沒有被我們支付,我想把他從報告中刪除。如何在不刪除符合聯接條件的所有條目的情況下限制選擇?
在此查詢我得到的所有跟蹤的時間每批該用戶通過跟蹤在該批次的總時間除以減去[名]。
批次的任務包含estimated_nonrecurring和estimated_recurring。 批次有batch_logs,其中有time_elapsed,這是該批次實際工作的時間。
發生的事情不是選擇所有批次,然後獲取跟蹤該用戶的所有時間與跟蹤的總時間相比未被[名稱]跟蹤,而是忽略每個已批次[姓名]作爲條目。
這是我對比率的選擇聲明。
SELECT user_time_by_batch.batch_id, userid, user_time_by_batch/total_time_by_batch as ratio FROM
(
SELECT SUM(time_elapsed) user_time_by_batch, userid, batch_id
FROM batch_log
inner join batches on batch_log.batch_id = batches.id
Where start_time between (?) and (?)
and end_time is not null and time_elapsed BETWEEN \"00:00:00\" AND \"10:00:00\"
and batch_id not in (\"-1\", \"-2\", \"-3\", \"-4\", \"-5\", \"-6\", \"-7\", \"-8\", \"-9\", \"-10\", \"-11\", \"-12\", \"-13\", \"-14\", \"-15\", \"-16\", \"-17\")
and batches.operation_id = ?
and batch_log.userid = ?
GROUP BY batch_id, userid
) user_time_by_batch
INNER JOIN
(
SELECT SUM(time_elapsed) total_time_by_batch, batch_id
FROM batch_log
inner join batches on batch_log.batch_id = batches.id
Where start_time between (?) and (?)
and end_time is not null and time_elapsed BETWEEN \"00:00:00\" AND \"10:00:00\"
and batch_id not in (\"-1\", \"-2\", \"-3\", \"-4\", \"-5\", \"-6\", \"-7\", \"-8\", \"-9\", \"-10\", \"-11\", \"-12\", \"-13\", \"-14\", \"-15\", \"-16\", \"-17\")
and batches.operation_id = ?
and batch_log.userid != 'name'
GROUP BY batch_id
) total_time_by_batch
ON user_time_by_batch.batch_id = total_time_by_batch.batch_id ;
你說「這是忽略所有的已經smacpherson作爲一個條目批」。我認爲這正是你要說的。我的猜測是,你需要按用戶和批次(不是批量單獨)在這些總和中排除McPherson,然後將這些總和按批計算以獲得批次總計。 – mikeY
是的,我只是試圖讓他脫離批處理:如果bob工作6小時,mac工作3,那麼鮑勃應該有1.0作爲比例,而不是6.66666 – davidahines
我不知道,但我認爲你是什麼現在做的是說「總結這一點,但不要選擇與Mac的任何批次」。我想你想要做的就是彙總所有不是mac的用戶,然後總結他們的時間來創建你的批次總數作比較。然後鮑勃是1.0。但我可以離開基地。 – mikeY