具有平均值的Group By将0作为平均值PostgreSQL
我有下表具有平均值的Group By将0作为平均值PostgreSQL,sql,postgresql,group-by,Sql,Postgresql,Group By,我有下表 customer_id | cust_name | city | grade | salesman_id -------------+----------------+------------+-------+------------- 3002 | Nick Rimando | New York | 100 | 5001 3007 | Brad Davis | New York | 20
customer_id | cust_name | city | grade | salesman_id
-------------+----------------+------------+-------+-------------
3002 | Nick Rimando | New York | 100 | 5001
3007 | Brad Davis | New York | 200 | 5001
3005 | Graham Zusi | California | 200 | 5002
我想得到纽约市的平均分数,我试着用我的查询
SELECT Avg(grade),city from customer Group BY city Having city ='New York' ;
但我有这个
Avg | City |
-------------+----------------+
0000 | New York |
我的查询有什么可能的修复方法?您的查询没有问题 我刚刚用下表在我的数据库上测试了它:
+-------------+-----------+-------+
| customer_id | city | grade |
+-------------+-----------+-------+
| 1 | New York | 200 |
| 2 | New York | 300 |
| 3 | Barcelona | 400 |
+-------------+-----------+-------+
查询按城市从客户群中选择城市、平均(等级)代码>返回:
+-----------+------------+
| city | Avg(grade) |
+-----------+------------+
| Barcelona | 400.0000 |
| New York | 250.0000 |
+-----------+------------+
+----------+------------+
| city | Avg(grade) |
+----------+------------+
| New York | 250.0000 |
+----------+------------+
查询从客户群中选择城市,按城市=纽约的城市选择平均(等级)代码>返回:
+-----------+------------+
| city | Avg(grade) |
+-----------+------------+
| Barcelona | 400.0000 |
| New York | 250.0000 |
+-----------+------------+
+----------+------------+
| city | Avg(grade) |
+----------+------------+
| New York | 250.0000 |
+----------+------------+
“坡度”列的类型可能错误。确保它是一个数字
您还可以使用WHERE
而不是have
:
SELECT city, Avg(grade) FROM customer WHERE city='New York';
什么数据类型是等级
?产生0
的数字类型的平均值通常不会有4位数字。(同时,这表明我无法复制您的问题,如所述:)您如何运行查询?可能该值正在被截断。(虽然我认为你实际上想要的是where city=…
而不是HAVINGMy bad,但我使用了转储数据,并且grade的数字数据类型的精度仅高达3。只是为了向发现这一点的任何人澄清:HAVING是用于限制结果列的结果集,这些结果列是聚合计算(例如,具有平均值(grade)>100
)。对于数据而非计算的结果列,请使用WHERE。这应该是注释,而不是答案。请删除此答案并对问题进行注释。谢谢,我的成绩数据类型错误