Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
组合SQL中两个不同表中的两个字段_Sql_Database - Fatal编程技术网

组合SQL中两个不同表中的两个字段

组合SQL中两个不同表中的两个字段,sql,database,Sql,Database,我有两张桌子: 测试: id name last_name price test1 id name price 我想合并两个表中的两个字段(价格)并计算它们的平均值。但是我得到了每个表的平均值 SELECT AVG(price) FROM test as p UNION SELECT AVG(price) FROM test1 as p 这个怎么样: SELECT AVG(price) AS P FROM ( SELECT price FROM test UNION ALL

我有两张桌子:

测试:

id
name
last_name
price
test1

id
name
price
我想合并两个表中的两个字段(价格)并计算它们的平均值。但是我得到了每个表的平均值

SELECT AVG(price) FROM test as p
UNION
SELECT AVG(price) FROM test1 as p
这个怎么样:

SELECT AVG(price) AS P FROM
(
    SELECT price FROM test
    UNION ALL
    SELECT price FROM test1
) AS TMP
我认为您需要
UNION ALL
来真正包含所有价格,否则重复的价格将被忽略,这可能会对平均价格产生影响。

如何:

SELECT AVG(price) AS P FROM
(
    SELECT price FROM test
    UNION ALL
    SELECT price FROM test1
) AS TMP

我认为您需要
UNION ALL
来真正包含所有价格,否则重复的价格将被忽略,这可能会影响平均值。

您可以使用子查询或with子句:

WITH all_data as(
    SELECT id,name,price FROM test as t
    UNION ALL
    SELECT id,name,price FROM test as t2
)
SELECT AVG(price) FROM all_data

可以使用子查询或with子句执行此操作:

WITH all_data as(
    SELECT id,name,price FROM test as t
    UNION ALL
    SELECT id,name,price FROM test as t2
)
SELECT AVG(price) FROM all_data

如果您想根据姓名进行平均,则:

  • 您必须使用union all,然后按名称分组
  • 查找平均值

  • 如果您只想要平均值,那么先进行联合所有,然后进行平均值计算如果您想要根据名称进行平均值计算,那么:

  • 您必须使用union all,然后按名称分组
  • 查找平均值

  • 如果您只需要平均值,那么首先执行Union all,然后获取平均值

    列,而不是字段。。。将两个表中的两个字段(价格)组合起来,并计算每对id和名称的平均值?虽然很可能与这样一个基本问题无关,但您应该始终为正在使用的DBMS添加标记。Postgres、Oracle、DB2…列,而不是字段。。。将两个表中的两个字段(价格)组合起来,并计算每对id和名称的平均值?虽然很可能与这样一个基本问题无关,但您应该始终为正在使用的DBMS添加标记。Postgres、Oracle、DB2……谢谢,纠正了错误:-)谢谢,纠正了错误:-)