我有以下查询,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我所拥有的limit和offset在我的查询中的总金额。
但后来我得到了错误:
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)
你要:
SUM(SUM(km)) OVER () AS total_km
Run Code Online (Sandbox Code Playgroud)
SUM()起初的嵌套看起来很奇怪。内部SUM(km)是聚合函数。外层SUM()是窗函数。