我希望使用over()获得这样的结果:
Id | Name | Salary | Average |
1 | User1| 1000 | 2000 |
我目前正在使用这个:
WITH users AS (
SELECT us_id, us_name, us_salary, avg(us_salary) over()
FROM t_user_us
)
SELECT *
FROM users
WHERE us_name = 'User 1';
是否可以以更简单的方式进行?
声明:
CREATE TABLE T_USER_US (
US_id SERIAL PRIMARY KEY,
US_name VARCHAR(40) NOT NULL,
US_salary INTEGER NOT NULL
);
INSERT INTO T_USER_US ("us_name","us_salary")
VALUES ('User 1',1000), ('User 2',2000), ('User 3',3000);
答案 0 :(得分:2)
另一个选择是既不使用窗口函数也不使用公用表表达式:
SELECT us_id,
us_name,
us_salary,
(select avg(us_salary) from t_user_us) as avg_salary
FROM t_user_us
WHERE us_name = 'User 1';