我有以下内容wage_table:
worker_id, hourly_rate
1 , 20
2 , Null
3 , 30
4 , 40
Run Code Online (Sandbox Code Playgroud)
我想添加一个额外的列,mean_hourly_rate例如:
worker_id, hourly_rate, mean_hourly_rate
1 , 20 , 30
2 , Null , 30
3 , 30 , 30
4 , 40 , 30
Run Code Online (Sandbox Code Playgroud)
我有以下代码,但出现错误“列worker_id不在GROUP BY子句中”
SELECT
*,
AVG(hourly_rate) AS mean_hourly_rate
FROM wage_table
Run Code Online (Sandbox Code Playgroud)
我想知道正确的做法是什么?谢谢!
您可以使用窗口函数:avg(hourly_rate) OVER ()
例如:
WITH data(worker_id, hourly_rate) AS (
VALUES
(1, 20),
(2, Null),
(3, 30),
(4, 40)
)
SELECT
worker_id,
hourly_rate,
avg(hourly_rate) OVER () AS mean_hourly_rate
FROM data
Run Code Online (Sandbox Code Playgroud)
产生:
worker_id | hourly_rate | mean_hourly_rate
-----------+-------------+------------------
1 | 20 | 30.0
2 | NULL | 30.0
3 | 30 | 30.0
4 | 40 | 30.0
(4 rows)
Run Code Online (Sandbox Code Playgroud)