MS ACCESS как усреднить 3 столбца в 2 таблицах - PullRequest
0 голосов
/ 03 мая 2011

У меня есть следующие таблицы:

T1:
Repair_ID, Descreption,Cost,Level
(1,a,24,9)
(2,b,34,9)
(3,a,22,3)
(4,c,11,6)

T2:
Repair_ID, Start_Time, End_Time,Location_ID
(1,02:00:00,03:00:00,3)
(2,04:00:00,05:00:00,7)
(3,06:00:00,08:00:00,3)

Я хочу иметь возможность получить таблицу, которая содержит среднее значение стоимости, среднее значение уровня и среднее значение продолжительности ремонта.(путем вычитания end_Time из start_time) группировки по Descreption и Location_ID, чтобы таблица выглядела следующим образом: Descreption, Location_ID, AvgCost, AvgLevel, Avg Duration (a, 3, (24 + 22/2) = 24, (9 + 3 /2 = 6), 01:30:00 *)

  • 1 час для repair_ID 1 и 2 часа для repair_ID 3 = 01:30:00 в среднем, поскольку эти два ремонта произошли в одном и том же месте ииметь то же самое описание спасибо

1 Ответ

2 голосов
/ 03 мая 2011

Это на самом деле довольно просто.Присоединитесь к трем таблицам и выполните расчеты и группировку, которые вы описали

Обновление Форматирование среднего значения Разница дат немного сложнее.Вы должны сделать формат после того, как Агрегат был выполнен.Самый простой способ сделать это - использовать линейный просмотр

SELECT 
     Descreption,
     Location_id,
     AvgLevel,
     AvgCost,
     Format(CDATE(AvgDuration),"hh:mm:ss") AvgDuration
FROM
(
    SELECT
        repair.Descreption,
        location.Location_id,
        AVG(repair.level) AvgLevel,
        AVG(repair.Cost) AvgCost,
        AVG(times.end_time - times.start_time)  AvgDuration 

    FROM 
        T3 location
        INNER JOIN t1 repair
        on location.repair_id = repair.repair_id
        INNER JOIN t2 times
        ON location.repair_id = times.repair_id
    GROUP BY
        repair.Descreption,
        location.Location_id) foo
ORDER BY
       AvgCost desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...