SQL-`group by`未给出预期结果

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位小数)-这里有什

我遇到了一个看似简单的问题。数据如下表所示

表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_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仍会将其解释为列名,而不是新的别名