저는 Postgres를 사용하고 있습니다.월간 평균 및 월별 그룹 계산 방법
다음 쿼리를 사용하여 각 달의 평균 시간 간격을 계산합니다. 글쎄, 적어도 매일 나는 데이터를 사용할 수있는 경우 :
SELECT
date_part('year'::text, c.date) AS yyyy,
to_char(c.date, 'MM'::text) AS monthnumber,
to_char(c.date, 'TMMonth'::text) AS monthname,
c.date,
l.name AS lineName,
avg(COALESCE(c.observed_arrival_time, v.arrival_time) - v.arrival_time) AS time_difference
FROM Counter c
JOIN vehicule_journey_at_stop v ON v.id = c.vj_at_stop_id
JOIN vehicule_journey vv ON vv.id = v.vehicule_journey_id
JOIN route_analyse r ON r.id = vv.route_id
JOIN line l ON l.id = r.line_id
JOIN pt_network n ON n.id = l.network_id
WHERE
date_part('year',c.date) = 2014
AND c.name = 'montée'
GROUP BY 1,2,3,4,5
ORDER BY 1,2
나는 주로 내가 원하는 것을 얻을, 결과는 다음과 같이 :
...
2014;"07";"Juillet";"2014-07-12";"Ligne 01";"00:04:16.0685"
2014;"07";"Juillet";"2014-07-20";"Ligne 01";"00:04:56.509875"
2014;"07";"Juillet";"2014-07-23";"Ligne 02";"00:00:00"
2014;"07";"Juillet";"2014-07-24";"Ligne 03";"00:00:00"
...
중요한 것은에 대해 계산, 마지막 위치의 평균 시간 각 "줄"(예 : "Ligne 01"또는 Ligne "02").
...
2014;"07";"Juillet";"Ligne 01";"00:04:36.5974375"
2014;"07";"Juillet";"Ligne 02";"00:00:00"
2014;"07";"Juillet";"Ligne 03";"00:00:00"
...
하지만 그것은 동작하지 않습니다 :
것은 내가, 월 사용 가능한 각 일 간격의 평균, 월별로 그룹화 그 결과를 가지고 즉 싶습니다이다. select에서 c.date
을 제거하면 (월별로 그룹화되지는 않지만 하루에 그룹화되지는 않습니다.) 평균 값이 잘못됩니다.
필드 목록에서'c.date'를 제거하고 group by 절도 역시 그렇게해야합니까? false average values는 무엇을 의미합니까? –
그 말은 ... 난 바보 야. 내 계산은 처음부터 거짓이었고, 평균 계산 값은 선택에서 c.date를 제거 할 때 참으로 좋은 값입니다. 관심을 가져 주셔서 감사합니다. – Mat