PostgreSQL, GROUP BY 和 Window 函数

Alf*_*lle 2 sql postgresql

我有以下查询,PostgreSQL其中显示记录:

'SELECT TO_CHAR(date_trunc(\'hour\', time::timestamp), \'YYYY-MM-DD HH24:MI:SS\') AS time_from,
        TO_CHAR(date_trunc(\'hour\', time::timestamp) + interval \'1 hour\', \'YYYY-MM-DD HH24:MI:SS\') AS time_to,
        SUM(km) AS km
 FROM cars 
 GROUP BY date_trunc(\'hour\', time::timestamp) LIMIT 1000 OFFSET 50'
Run Code Online (Sandbox Code Playgroud)

我想添加SUM(km) OVER() as km_total以获取km我所拥有的limitoffset在我的查询中的总金额。

但后来我得到了错误:

error: column "cars.km" must appear in the GROUP BY clause or be used in an aggregate function
Run Code Online (Sandbox Code Playgroud)

但是我不允许将它添加到 my GROUP BY,这给了我以下错误:

error: window functions are not allowed in GROUP BY
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

你要:

   SUM(SUM(km)) OVER () AS total_km
Run Code Online (Sandbox Code Playgroud)

SUM()起初的嵌套看起来很奇怪。内部SUM(km)是聚合函数。外层SUM()是窗函数。