Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 结束where子句_Sql_Postgresql_Window Functions - Fatal编程技术网

Sql 结束where子句

Sql 结束where子句,sql,postgresql,window-functions,Sql,Postgresql,Window Functions,我希望使用over()得到这样的结果: 我目前正在使用这个: 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, U

我希望使用over()得到这样的结果:

我目前正在使用这个:

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';

另一种选择是既不使用窗口函数也不使用公共表表达式:

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';

什么更简单?。。跳过第一步以计算平均值?。。语义较短?。为什么在这种情况下使用CTE?为什么不直接查询到表呢?我听说过使用分区的OVER(),这就是我所说的什么更简单?。。跳过第一步以计算平均值?。。语义较短?。为什么在这种情况下使用CTE?为什么不直接查询到表呢?我听说过使用partitoning的OVER(),这就是我所说的