Własciwie do policzenia potrzebujemy kilka rzeczy:
- Tabele sprzedaży w okresie
- Sumy sprzedaży narastajaco
- Sumy globalnej
- Troche matematyki
ad.1 Kwerenda suma_okres (w przykładzie okres I półrocza 2018)
SELECT
sales.group
,sales.productid
, um(CCur([sales])) AS s
FROM
sales
WHERE
(((sales.date) Between #1/1/2018# And #6/30/2018#))
GROUP BY
sales.group
, sales.productid;
ad.2 sumy narastajaco kwerenda sum_narastajaco
SELECT
o1.group
, o1.productid
, sum(o2.s) AS sn
FROM
suma_okres AS o1
INNER JOIN suma_okres AS o2 ON o1.s >= o2.s
GROUP BY
o1.group
,o1.productid;
ad. 3 to załatwiamy cross joinem w głównym zapytaniu
ad. 4 Kwerenda raport
SELECT
s.group
, s.productid
, s.s as [Sprzedaż]
, sum_narastajaco.sn [Sprzedaż narastająco]
, s.sa [Sprzedaż globalnie]
, round(s/sa,5)*100 as [% w sprzedaży]
, round(sn/sa,5)*100 as [% narastająco]
FROM (select
* from
(select sum(s) as sa from suma_okres) as sa,suma_okres) AS s
INNER JOIN sum_narastajaco ON (s.productid = sum_narastajaco.productid) AND (s.group = sum_narastajaco.group);
Wynik:
W załączniku plik accdb