在 PostgreSQL 中使用 AGE 函数排序时间戳持续时间

Order timestamp durations using AGE function in PostgreSQL

我有一堆 DVD 租借 + return 次,我想按持续时间排序,从最短租借时间(时间戳之间的时间量)到最长租借时间。 AGE 是我应该使用的函数吗?

到目前为止,这是我的功能失调 SQL:

  SELECT f.title, age(r.return_date, rental_date) FROM film f
JOIN inventory i
    ON f.film_id = i.film_id
JOIN rental r
    ON i.inventory_id = r.inventory_id
WHERE age(r.return_date, r.rental_date)
GROUP BY f.title
ORDER BY age ASC;

请客气一点,我是个 SQL 菜鸟 :)

age() 可以,但是:

  • 我觉得没必要 GROUP BY
  • 我觉得没必要 WHERE
  • 您需要别名或重复 ORDER BY 中的表达式。

所以:

SELECT f.title, age(r.return_date, r.rental_date)
FROM film f JOIN
     inventory i
     ON f.film_id = i.film_id JOIN
     rental r
     ON i.inventory_id = r.inventory_id
ORDER BY age(r.return_date, r.rental_date) ASC;