Присоединяйся один ко многим и получи среднее число, разделенное на одно? - PullRequest
0 голосов
/ 21 мая 2018

Если у меня есть две таблицы

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

Это правильно разделит средние значения для companies_products.order_count на company_id * value или объединяет компании value / выбирает случайную компанию value, чтобы разделить все средние значения на?

Просто чтобы уточнить.Я не хочу производительности по каждой компании.Я хочу, чтобы общее среднее значение для каждой компании order_count / для этих компаний value представляло собой одно большое среднее значение.

Моя проблема не в том, что этот запрос не выполняется, я просто обеспокоен тем, что это не достижениечто я ищу, и если не считать создания некоторых новых таблиц, я не уверен, как доказать, работает ли это или нет.Я получаю число, я просто не уверен, что это право число

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

Я хотел бы знать, почему яЯ не голосую.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Попробуйте это:

 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
0 голосов
/ 21 мая 2018

Если вы хотите по одной строке на компанию (как, по-видимому, подразумевается ваш комментарий), тогда вам нужно group by:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...