Как рассчитать разницу между всеми текущими записями и итоговыми записями предыдущих дат, используя GROUP BY и INNER JOIN? - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть таблица ниже:

SELECT * FROM reports;

 # id, date, o_type, quantity, vendor

'1', '2020-04-05', '2511', '200', 'apple'    
'2', '2020-04-05', '5120', '350', 'apple'    
'3', '2020-04-05', '2520', '150', 'apple'    
'4', '2020-04-05', '5114', '400', 'apple'    
'5', '2020-04-05', 'HG851', '200', 'google'    
'6', '2020-04-05', 'HG851A', '400', 'google'    
'7', '2020-04-05', 'MA5620G', '9000', 'google'    
'8', '2020-04-05', 'OT550', '7000', 'google'    
'9', '2020-04-05', 'OT925', '2000', 'google'    
'10', '2020-04-05', 'OT928', '2000', 'google'    
'11', '2020-04-06', '2520', '150', 'apple'    
'12', '2020-04-06', 'HG851', '200', 'google'    
'13', '2020-04-06', 'HG851', '200', 'google'    
'14', '2020-04-06', 'HG851A', '400', 'google'    
'15', '2020-04-07', '2511', '200', 'apple'    
'16', '2020-04-07', '5120', '350', 'apple'    
'17', '2020-04-07', '2520', '150', 'apple'    
'18', '2020-04-07', '5114', '400', 'apple'    
'19', '2020-04-07', 'G-440G-A', '200', 'NOKIA'    
'20', '2020-04-07', '1240GA', '400', 'NOKIA'    
'21', '2020-04-07', '1440GP', '9000', 'NOKIA'    
'22', '2020-04-07', 'B-0404G-B', '7000', 'NOKIA'    
'23', '2020-04-07', 'B2404GP', '2000', 'NOKIA'    
'24', '2020-04-07', 'G-881G-A', '2000', 'NOKIA'    
'25', '2020-04-08', 'G-881G-B', '150', 'NOKIA'    
'26', '2020-04-08', 'HG851', '200', 'google'    
'27', '2020-04-08', 'HG851A', '400', 'google'

У меня ниже запрос в соответствии с требованиями моего проекта:

SELECT Date(a.date), a.vendor, a.o_type, a.quantity, b.total FROM reports a 
INNER JOIN ( 
SELECT vendor, date, SUM(quantity) as total 
FROM reports WHERE date >= '2020-04-06' AND date <= '2020-04-08' 
GROUP BY vendor, date) b ON a.date = b.date AND a.vendor = b.vendor

 # Date(a.date), vendor, o_type, quantity, total

'2020-04-06', 'apple', '2520', '150', '150'    
'2020-04-06', 'google', 'HG851', '200', '800'    
'2020-04-06', 'google', 'HG851', '200', '800'    
'2020-04-06', 'google', 'HG851A', '400', '800'    
'2020-04-07', 'apple', '2511', '200', '1100'    
'2020-04-07', 'apple', '5120', '350', '1100'    
'2020-04-07', 'apple', '2520', '150', '1100'    
'2020-04-07', 'apple', '5114', '400', '1100'    
'2020-04-07', 'NOKIA', 'G-440G-A', '200', '20600'    
'2020-04-07', 'NOKIA', '1240GA', '400', '20600'    
'2020-04-07', 'NOKIA', '1440GP', '9000', '20600'    
'2020-04-07', 'NOKIA', 'B-0404G-B', '7000', '20600'    
'2020-04-07', 'NOKIA', 'B2404GP', '2000', '20600'    
'2020-04-07', 'NOKIA', 'G-881G-A', '2000', '20600'   
'2020-04-08', 'NOKIA', 'G-881G-B', '150', '150'    
'2020-04-08', 'google', 'HG851', '200', '600'    
'2020-04-08', 'google', 'HG851A', '400', '600'

Я должен добавить дополнительный столбец РАЗНИЦА к вышеуказанному ВНУТРЕННЕМУ JOIN запрос. Как рассчитать разницу между текущей датой и итоговой датой в столбце поставщика.

Example1:

2020-04-06 ---> apple ---> total(150)     
2020-04-07 ---> apple ---> total(1100) Here difference equals to -950 (150-1100)

Example2:

2020-04-07 ---> apple ---> total(1100)     
2020-04-08 ---> apple ---> total(0) Here difference equals to -1100 (0-1100)

Example3:

2020-04-07 ---> NOKIA ---> total(20600)     
2020-04-08 ---> apple ---> total(150) Here difference equals to -20450 (150-20600)

Пожалуйста, объясните мне, как действовать дальше? или если какие-либо другие детали, необходимые с моей стороны, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...