Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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
Mysql 将一对多合并,得到多个的平均值除以一?_Mysql_Sql - Fatal编程技术网

Mysql 将一对多合并,得到多个的平均值除以一?

Mysql 将一对多合并,得到多个的平均值除以一?,mysql,sql,Mysql,Sql,如果我有两张桌子 companies id value companies_products company_id order_count 我有一个如下的问题: SELECT (AVG(companies_products.order_count) / companies.value) as special_number FROM companies JOIN on companies_products on companies_products.company_id = compani

如果我有两张桌子

companies
id
value

companies_products
company_id
order_count
我有一个如下的问题:

SELECT
  (AVG(companies_products.order_count) / companies.value) as special_number
FROM companies
JOIN on companies_products on companies_products.company_id = companies.id
这将正确地将
公司产品的平均数除以该
公司id
,还是将公司的
相加
/随机选取一家公司
将所有平均数除以

我只是想澄清一下。我不想要每个公司的业绩。我想把每家公司的平均
订单数量
/那家公司的
价值
的总体平均值作为一个大平均值

我的问题不是这个查询没有运行,我只是担心它没有实现我要寻找的内容,并且缺少创建一些新表的能力,我不知道如何证明它是否有效。我有一个号码我只是不确定它是不是正确的

Sample Data:

companies data:

id: 1
value: 10

id: 2
value: 20

companies_products
company_id: 1
order_count: 20

company_id: 1
order_count: 40

company_id: 2
order_count: 20

company_id: 2
order_count: 20
输出

Result:
special_number: 2

Explanation:
avg of first company would be 3
avg of second company would be 1

我很想知道为什么我被否决。

如果你想让每家公司排一行(正如你的评论所暗示的那样),那么你需要
分组:

select c.id, avg(cp.order_count) / c.value) as special_number
from companies c join
     companies_products cp
     on cp.company_id = c.id
group by c.id, c.value;  -- the "c.value" is technically redundant, but I think it adds clarity
试试这个:

 select (SELECT AVG(companies_products.order_count)  FROM companies
JOIN on companies_products on companies_products.company_id = companies.id)/ cast(companies.value as float)
FROM companies
JOIN on companies_products on companies_products.company_id = companies.id

您没有加入条件。。。您是在这里尝试交叉乘积,还是缺少查询的一部分?您的查询毫无意义,因为它是一个聚合查询,返回一行和
公司。值
未汇总。样本数据和期望的结果将真正有助于传达您想要做的事情。@GordonLinoff我已经添加了样本数据和期望的结果。很抱歉,我已经澄清,我正在寻找一个平均值,即每个公司的平均值
特殊编号
。实现这一点的最佳方法是将上面的查询作为子查询,然后求平均值吗?