Сценарий: мне нужно рассчитать сумму суммы, применимую к каждому клиенту, на основе их почасовых ставок и времени (минут), в течение которых они предлагали/получали услуги в разных тарифных категориях.
Используя следующий запрос, я получаю следующие результаты:
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
Я пытаюсь выяснить, как СНАЧАЛА мне нужно преобразовать результат РАЗНИЦА в читаемые часы с помощью функции, ЗАТЕМ умножить преобразованный результат на соответствующий часовой_рейт, а затем получить СУММУ для каждого клиента.
Сначала я попробовал это (ниже), что действительно близко, но это не точно. Я думаю, что это не точно, потому что мне нужно сначала преобразовать столбец РАЗНИЦА.
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
Любые идеи?
SELECT SUM(T) as YES FROM ( SELECT pc.client_id, pr.hourly_rate, ROUND((( SUM(tt.time_end) - SUM(tt.time_start))/3600),2) as Difference, (ROUND((( SUM(tt.time_end) - SUM(tt.time_start))/3600),2) * hourly_rate) as T 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 AND cl.client_id = " . $db->prep($client_id) . " GROUP BY hourly_rate) as table1
Спасибо! - person jonthoughtit   schedule 02.07.2012