在查询中使用平均值 (PostgreSQL)

Pan*_*ing 5 postgresql average

我在提出查询以从以下模式中查找每个巴士公司使用的巴士的平均年龄时遇到问题:

巴士公司

company_id | name
 1           NED
 2           JIM
Run Code Online (Sandbox Code Playgroud)

总线类型

type_id | date_made
 1        2006-01-26
 2        1999-05-05
 3        2000-09-01
Run Code Online (Sandbox Code Playgroud)

路线

route_id | bustype | bus_company
 1         2         1
 2         1         1
 3         1         1
 4         3         2
 5         3         2
 6         1         2
 7         2         2
Run Code Online (Sandbox Code Playgroud)

在这个例子中,假设今天是 2013-03-18,NED 的平均公交车年龄是 4246.666 = 4247 天。

整个查询会是什么样子?

pil*_*row 3

我现在无法测试,但类似:

-- assuming "date_made" is a pg DATE column
--
   SELECT buscompany.name, ROUND(AVG(CURRENT_DATE - date_made))
     FROM buscompany
LEFT JOIN route
          ON route.bus_company = buscompany.company_id
LEFT JOIN bustype
          ON route.bustype = bustype.type_id
 GROUP BY 1
Run Code Online (Sandbox Code Playgroud)

应该做你想做的事(tm)。以 pg 为单位的日期相减得出天数差异。