我想使用 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);
最佳答案
另一种选择是既不使用窗口函数也不使用公用表表达式:
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';
关于sql - 结束于 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42575308/