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