2017-10-05 4 views
0

テーブル構造1(clockins): date | |タイムアウト|ジョブコード|雇用率|従業員ID結果をまとめてグループ化することはできますか?

テーブル構造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

私は仕事の記述でグループ化されたすべてのデータを見たいと思います。 "Job Type 2"の3つのレコードの代わりに、1つのレコードだけでなく、timestampdiffカラムの正しい数学を保持します。私はこの他の方法を試して、間違った数式で終わってしまいました。なぜなら、タイムスタンプをジョブレートで掛け合わせると、就職率の最初のインスタンスで式を実行するだけなのでです。さまざまな就労率を考慮していない申し訳ありませんが、私はこれが畳み込まれていることを知っています。 –

+0

1つのジョブを実行すると、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']; 
} 

?> 
関連する問題