SQL中给出意外输出的两个字段的商的AVG()
我有一个SQL表,需要找到由另一个字段(SQL中给出意外输出的两个字段的商的AVG(),sql,sqlite,Sql,Sqlite,我有一个SQL表,需要找到由另一个字段(query\u name)分组的两个字段(rating,position)的商的平均值。我无法理解为什么以下两个查询不能给出相同的结果: 问题1: SELECT query_name, AVG(rating/position) AS quality FROM queries GROUP BY query_name 问题2: SELECT query_name, AVG(rating*100/position)*100 AS quality FROM qu
query\u name
)分组的两个字段(rating
,position
)的商的平均值。我无法理解为什么以下两个查询不能给出相同的结果:
问题1:
SELECT query_name, AVG(rating/position) AS quality
FROM queries
GROUP BY query_name
问题2:
SELECT query_name, AVG(rating*100/position)*100 AS quality
FROM queries
GROUP BY query_name
这是表格:
+------------+-------------------+----------+--------+
| query_name | result | position | rating |
+------------+-------------------+----------+--------+
| Dog | Golden Retriever | 1 | 5 |
| Dog | German Shepherd | 2 | 5 |
| Dog | Mule | 200 | 1 |
| Cat | Shirazi | 5 | 2 |
| Cat | Siamese | 3 | 3 |
| Cat | Sphynx | 7 | 4 |
+------------+-------------------+----------+--------+
这是预期输出:
Result table:
+------------+---------+
| query_name | quality |
+------------+---------+
| Dog | 2.50 |
| Cat | 0.66 |
+------------+---------+
但是,查询1给出了以下内容:
Result table:
+------------+---------+
| query_name | quality |
+------------+---------+
| Dog | 2.33 |
| Cat | 0.33 |
+------------+---------+
有些数据库进行整数除法,因此
1/2
是0
而不是0.5
。如果是这种情况,那么你的号码将被关闭
它很容易修理。我只是乘以1.0
:
SELECT query_name, AVG(rating * 1.0 / position) AS quality
用您正在使用的数据库标记您的问题。