SQL中给出意外输出的两个字段的商的AVG()

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

我有一个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 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

用您正在使用的数据库标记您的问题。