как написать групповой запрос SQL с преобразованием единиц измерения количества? - PullRequest
1 голос
/ 04 апреля 2019
Stock

Product  Quantity  Unit 
-------------------------------
001       5        box
001       10       bottle
001       60       gallon


Conversion

Unit1     Unit2    Rate
----------------------
box       bottle    20
bottle    gallon    30

Unit1 = Unit2 * Rate

Как написать SQL-запрос к сумме (количеству) в определенной единице (например, бутылке в примере)?

select product, sum(quantity * ....) from Stock group by product

может сделать функция базы данных, такая как getRate (unit1, unit2)работа?как насчет производительности?

1 Ответ

1 голос
/ 04 апреля 2019

Вам необходимо расширить таблицу конверсий, чтобы в ней были все комбинации.Это одноразовое усилие, но вам нужно добавить строки вроде этого:

Unit1     Unit2    Rate
----------------------
box       bottle    20
bottle    gallon    30
gallon    bottle    1/30

Затем вы можете использовать LEFT JOIN:

SELECT s.product, SUM(s.quantity * coalesce(c.rate, 1))
FROM stock s LEFT JOIN
     conversion c 
     ON s.unit = c.unit1 AND c.unit2 = 'bottle'
GROUP BY s.product
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...