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我已经添加了样本数据和期望的结果。很抱歉,我已经澄清,我正在寻找一个平均值,即每个公司的平均值特殊编号
。实现这一点的最佳方法是将上面的查询作为子查询,然后求平均值吗?