我有下表:
表#1:
SELECT * FROM portal.reports; # id, date, ont_type, quantity '1', '2020-04-05', '2511', '200' '2', '2020-04-05', '5120', '350' '3', '2020-04-05', '2520', '150' '4', '2020-04-05', '5114', '400' '5', '2020-04-05', 'HG851', '200' '6', '2020-04-05', 'HG851A', '400' '7', '2020-04-05', 'MA5620G', '9000' '8', '2020-04-05', 'OT550', '7000' '9', '2020-04-05', 'OT925', '2000' '10', '2020-04-05', 'OT928', '2000' '11', '2020-04-06', '2520', '150' '12', '2020-04-06', '5114', '400' '13', '2020-04-06', 'HG851', '200' '14', '2020-04-06', 'HG851A', '400'
表#2:
SELECT * FROM portal.ont; # ontType, vendor '2520', 'APPLE' 'HG851', 'GOOGLE' 'HG851A', 'GOOGLE' 'MA5620G', 'GOOGLE' 'OT550', 'GOOGLE' 'OT925', 'GOOGLE' '5114', 'APPLE' '5120', 'APPLE'
INNER JOIN:
SELECT Date(a.date), b.vendor, a.ont_type, a.quantity FROM portal.reports a INNER JOIN ( SELECT vendor, ontType FROM portal.ont ) b ON b.ontType = a.ont_type AND a.date >= '2020-04-05' AND a.date <= '2020-04-08' # Date(a.date), vendor, ont_type, quantity '2020-04-05', 'APPLE', '2520', '150' '2020-04-05', 'GOOGLE', 'HG851', '200' '2020-04-05', 'GOOGLE', 'HG851A', '400' '2020-04-05', 'GOOGLE', 'MA5620G', '9000' '2020-04-05', 'GOOGLE', 'OT550', '7000' '2020-04-05', 'GOOGLE', 'OT925', '2000' '2020-04-05', 'APPLE', '5114', '400' '2020-04-05', 'APPLE', '5120', '350' '2020-04-06', 'APPLE', '2520', '150' '2020-04-06', 'GOOGLE', 'HG851', '200' '2020-04-06', 'GOOGLE', 'HG851A', '400' '2020-04-06', 'GOOGLE', '5114', '400'
我必须按GROUP BY供应商和日期计算总量,如下所示:
+--------------+----------+----------+----------+-------+ | # date | vendor | ont_type | quantity | total | +--------------+----------+----------+----------+-------+ | '2020-04-05' | 'APPLE' | '2520' | '150' | '900' | | '2020-04-05' | 'APPLE' | '5114' | '400' | '900' | | '2020-04-05' | 'APPLE' | '5120' | '350' | '900' | | '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' | +--------------+----------+----------+----------+-------+
请指导我知道如何继续。
我有一个下表:表#1:SELECT * FROM portal.reports; #id,日期,ont_type,数量'1','2020-04-05','2511','200''2','2020-04-05','5120','350'...] >
您可以加入,汇总和使用窗口函数来计算每个供应商的总数:
select
r.date,
o.vendor,
o.type,
sum(r.quantity),
sum(sum(r.quantity)) over(partition by o.vendor) total
from portal.reports r
inner join portal.ont on on o.ont_type = r.ont_type
where r.date between '2020-04-05' and '2020-04-08'
group by r.date, o.vendor, o.type