Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
具有平均值的Group By将0作为平均值PostgreSQL_Sql_Postgresql_Group By - Fatal编程技术网

具有平均值的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。这应该是注释,而不是答案。请删除此答案并对问题进行注释。谢谢,我的成绩数据类型错误