シナリオ: 各クライアントに適用される金額の合計を、時間料金と、さまざまな料金カテゴリでサービスを提供/受信した時間 (分) に基づいて計算する必要があります。
次のクエリを使用すると、次の結果が得られます。
SELECT pc.client_id, pr.hourly_rate, (SUM(tt.time_end) - SUM(tt.time_start)) as Difference
FROM track_time as tt, project_track as pt, project as pr, project_clients as pc, clients as cl
WHERE tt.track_id = pt.track_id
AND pt.project_id = pr.project_id
AND pr.project_id = pc.project_id
AND pc.client_id = cl.client_id
GROUP BY hourly_rate
結果
client_id hourly_rate Difference
1 50 6360
1 23 4080
1 43 5760
6 13 34680
7 60 32400
7 14 23340
関数を使用して DIFFERENCE 結果を読み取り可能な時間に変換する必要がある最初の方法を理解しようとしています。次に、その変換された結果の時間をそれぞれの hourly_rate に乗算し、各クライアントの SUM を取得します。
これ (以下) を最初に試してみましたが、これは非常に近いものですが、正確ではありません。最初に DIFFERENCE 列を最初に変換する必要があるため、正確ではないと考えています。
SELECT SUM(Difference2) AS total
FROM (SELECT pc.client_id, pr.hourly_rate, (SUM(tt.time_end) - SUM(tt.time_start)) as Difference, ((SUM(tt.time_end) - SUM(tt.time_start)) * pr.hourly_rate) as Difference2
FROM track_time as tt, project_track as pt, project as pr, project_clients as pc, clients as cl
WHERE tt.track_id = pt.track_id
AND pt.project_id = pr.project_id
AND pr.project_id = pc.project_id
AND pc.client_id = cl.client_id
GROUP BY hourly_rate) AS table1
何か案は?