【发布时间】:2026-02-09 00:55:01
【问题描述】:
我正在尝试对某些特定行的值求平均值,但对所有行的数量求和。
我有两张桌子,一张叫exchanges,另一张叫valid_country。
交流
+-----------+----------+--------------+----------+--------+
| id | ref | country | value | volume |
+-----------+----------+--------------+----------+--------+
| 1 | 1029 | DE | 1 000 | 100 |
+-----------+----------+--------------+----------+--------+
| 2 | 1029 | US | 2 000 | 250 |
+-----------+----------+--------------+----------+--------+
| 3 | 1029 | FR | 3 500 | 300 |
+-----------+----------+--------------+----------+--------+
| 4 | 1053 | UK | 1 200 | 110 |
+-----------+----------+--------------+----------+--------+
| 5 | 1029 | RU | 900 | 70 |
+-----------+----------+--------------+----------+--------+
此表包含许多具有不同国家/地区的参考文献 (ref),它们本身具有不同的值和数量。
有效国家
+--------------+--------------+
| ref | country |
+--------------+--------------+
| 1029 | US |
+--------------+--------------+
| 1029 | RU |
+--------------+--------------+
| 1053 | UK |
+--------------+--------------+
此表列出了所有可以取平均值的“良好”国家/地区。
我想要的结果查询是:
+----------+------------+-------------+
| ref | AVG(value) | SUM(volume) |
+----------+------------+-------------+
| 1029 | 1 450 | 720 |
+----------+------------+-------------+
| 1053 | 1 200 | 110 |
+----------+------------+-------------+
首先参考是GROUP BY。
参考 1029 应 AVERAGE 仅美国和俄罗斯的值(因为表 valid_country)但 SUM 所有国家的体积。
Ref 1053 也是如此,但由于只有一排,所以很容易。
这里有一点Fiddle。 SQL 请求是错误的,因为它平均了所有国家,而不仅仅是好的国家。
【问题讨论】:
-
首先,您需要加入您的两个表,以便在您的查询中知道哪些国家/地区被认为是“好”。
-
(顺便说一句,您的小提琴将第二个表的值插入到第一个表中。由于第一个表也包含这些列,因此它不会引发错误,但不会给出一个实际可测试的结果。)
-
@CBroe 谢谢!我已经编辑了我的小提琴:sqlfiddle.com/#!9/e16969/4
标签: mysql sql group-by sum average