SQL рассчитывает соотношение между счетами из двух разных таблиц - PullRequest
0 голосов
/ 26 июня 2019

У меня есть три таблицы: Товары с колонками id, описание
Требования со столбцами id, ветка
Инвентарь с колонками id, филиал

Я хочу рассчитать соотношение для каждого продукта и отрасли и получить что-то вроде этого

product branch demands stock ratio
shoes   A      4       8     2
shoes   B      8       4     0.5
shirts  A      1       1     1

Я думал, что это будет легко, но я застрял после этого

SELECT products.id, products.description,demands.branch, COUNT(demands.branch)
FROM products
LEFT JOIN demands ON (demands.id=products.id)
WHERE demands.id IS NOT NULL
GROUP BY products.id, demands.branch

Могут быть требования, когда на складе ничего нет, и я работаю с базой данных MySQL, встроенной в административную систему

1 Ответ

0 голосов
/ 26 июня 2019

Если я правильно понимаю, один метод использует union all:

select id, branch, sum(demand), sum(stock), sum(stock) / nullif(sum(demand), 0) as ratio
from ((select id, branch, 1 as demand, 0 as stock
       from demands
      ) union all
      (select id, branch, 0 as demand, 1 as stock
       from stock
      )
     ) ds
group by id, branch;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...