SQL-`group by`未给出预期结果
我遇到了一个看似简单的问题。数据如下表所示 表1 我想计算每个SQL-`group by`未给出预期结果,sql,postgresql,Sql,Postgresql,我遇到了一个看似简单的问题。数据如下表所示 表1 我想计算每个num\u用户所用的平均时间值,四舍五入到0位小数。这是我试过的 select round(num_users,0) as num_users , round(avg(time_taken),1) as time_taken from table1 as a group by a.num_users order by a.num_users 然而,这为每个不同的num\u用户提供了多行value(四舍五入到0位小数)-这里有什
num\u用户所用的平均时间
值,四舍五入到0位小数。这是我试过的
select
round(num_users,0) as num_users
, round(avg(time_taken),1) as time_taken
from table1 as a
group by a.num_users
order by a.num_users
然而,这为每个不同的num\u用户提供了多行value(四舍五入到0位小数)-这里有什么想法吗
预期产量
num_users | time_taken
----------------------
10 | 11.4
11 | 12.0
12 | 13.2
重复组中的表达式:
select round(num_users, 0) as num_users,
round(avg(time_taken), 1) as time_taken
from table1 as a
group by round(num_users, 0)
order by round(num_users, 0);
我要重复一遍,因为表达式的名称与列的名称相同。或者,你可以写:
select round(num_users, 0) as new_num_users,
round(avg(time_taken), 1) as time_taken
from table1 as a
group by new_num_users
order by new_num_users;
甚至:
group by 1
order by 1
即使您从a.num用户的组中删除限定符,Postgres仍会将其解释为列名而不是新别名。重复组中的表达式:
select round(num_users, 0) as num_users,
round(avg(time_taken), 1) as time_taken
from table1 as a
group by round(num_users, 0)
order by round(num_users, 0);
我要重复一遍,因为表达式的名称与列的名称相同。或者,你可以写:
select round(num_users, 0) as new_num_users,
round(avg(time_taken), 1) as time_taken
from table1 as a
group by new_num_users
order by new_num_users;
甚至:
group by 1
order by 1
即使a.num_用户从组中删除限定符
,Postgres仍会将其解释为列名,而不是新的别名