Utworzyłem dwa widoki, bo tak łatwiej.
Widok STANY - bo jak chcę
zliczyć prenumeraty, to muszę de facto sprawdzić każdego klienta, jego
zachowanie każdego dnia od dnia wysyłki.
W tabeli z wysyłkami mam tylko jedną informację, a widok STANY ułatwia
mi dalszą pracę.
Drugi widok to KOSTKA danych, do każdego wiersza w widoku STANY
uzupełniam informację o dane z tabeli WYSYLKA_1, dopisuję dane surowe i
przetworzone nieco.
W ten sposób KOSTKA ma
informację o każdym klienci, każdego dnia od dnia wysyłki i dalej.
Powstała KOSTKA dzienna danych, zgadza się?
I można zliczać, spełniać oczekiwania?
Tu podaję rozwiązanie, ale do niego wrócę, dokładnie opiszę
rozwiązania zastosowane. Teraz dla bardziej oblatanych od razu podaję rozwiązanie, a może są lepsze, znacie?
W.
-- WIDOK STANY
create view STANY as
select
*
from
(select data from
kalendarz) d, (select nr_klienta from
wysylka_1) k;
-- WIDOK KOSTKA
create view KOSTKA as
select
s.data
, w.nr_klienta
, w.plec
, w.wojewodztwo
, w.data_wysylki
, datediff (dd, w.data_wysylki, s.data) dn_od_wysylki
, case when s.data=w.data_odpowiedzi then 1.00 else 0.00 end zn_prenumeraty
, case when s.data>=w.data_odpowiedzi
then 1.00 else
0.00 end zn_prenumeraty_kum
, 1.00 zlicz
from stany s, wysylka_1 w
where s.nr_klienta=w.nr_klienta and s.data>=w.data_wysylki;
-- A teraz winiki, jak chcesz
grupuj, np. dodatkowo wydobądź płeć,
województwo...
select
dn_od_wysylki
, data_wysylki
, sum(zlicz)
liczba_obserwacji
, sum(zn_prenumeraty)
prenumeraty_biezace
, sum(zn_prenumeraty) / sum(zlicz) * 100 pr_prenumerat
, sum(zn_prenumeraty_kum)
prenumeraty_skum
, sum(zn_prenumeraty_kum) / sum(zlicz) * 100 pr_prenumerat_skum
from KOSTKA
group by
dn_od_wysylki, data_wysylki;
Brak komentarzy:
Prześlij komentarz