2017-10-05 134 views
0

表結構1(clockins): 日期| timein |超時| jobcode | jobrate | employeeid將結果分組在一起後,是否可以將結果分組在一起?

表結構2(jobdesc): jobcode | jobdescription

所以我有一個查詢的作用:

SELECT 
    jd.jobdescription, 
    ci.employeeid, 
    ci.jobcode, 
    SUM(timestampdiff(minute,ci.timein,ci.timeout)/60) * ci.jobrate 
FROM clockins ci 
RIGHT JOIN jobdesc jd ON ci.jobcode = jd.jobcode 
WHERE ci.date BETWEEN '0000-00-00' AND '0000-00-00' 
AND jobrate < 100 /* need this to distinguish salaried employees */ 
GROUP BY `jobcode` , `employeeid` 

該輸出數據,如:

example output

我相信必須有一個更好的方式來做到這一點,但這種方式將其分離出來非常重要,因爲每個工作角色可能會有不同的工作率的不同員工。所以我需要的是在缺少更好的術語的情況下「重新組合」它們,在mysql或php中達到這一點之後,或者如果您對如何更好地執行查詢有所建議,那也只是一種方法我都可以。我試圖找到這個,但我不能完全找到適合這種情況的答案。先謝謝您的幫助。

+1

什麼是'新'期望的輸出? – rtfm

+0

我想查看按作業描述分組的所有數據。 「作業類型2」只有一條記錄,而不是3條記錄,但仍保留timestampdiff列的正確數學運算。我嘗試了其他方式,結果出現了不正確的數學運算,因爲當通過jobrate乘以timestampdiff時,它僅執行第一個jobrate的等式。這不涉及不同的工作。對不起,我知道這很複雜,謝謝你的幫助。 –

+0

takie單個工作,有3個時間戳差異您想要顯示哪一個? – rtfm

回答

0

我最終得到同事們幫助解決這個問題。以防其他人正在尋找類似的東西,這是如何在PHP中完成的:

<?php 
$laborTotals = array(); 
$totalLaborDollars= 0; 
$laborTotals[$laborAnalysis['jobcode']]['jobcode'] = $laborAnalysis['jobrole']; 
    $laborTotals[$laborAnalysis['jobcode']]['jobdescription'] = $laborAnalysis['jobdescription']; 
    $laborTotals[$laborAnalysis['jobcode']]['totalsalary'] += $laborAnalysis['totalsalary']; 

} 

foreach ($laborTotals as $labor) { 
    $html .= ' <tr>'; 
    $html .= ' <td class="gridData">' . $labor['jobcode'] . '</td>'; 
    $html .= ' <td class="gridData">' . $labor['jobdescription'] . '</td>'; 
    $html .= ' <td class="gridData txtLeft"><b>$</b>' . number_format($labor['totalsalary'], 2, '.', ',') . '</td>'; 
    $totalLaborDollars+=$labor['totalsalary']; 
} 

?>