在 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;
我有一堆 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;