Cześć, to mój pierwszy post więc proszę o wyrozumiałość. Dostałem 3 zadania rekrutacyjne do rozwiązania w SQL, będę wdzięczny za pomoc w ich rozwiązaniu. EDIT: Moje rozwiązania okazały się niewystarczające, określone jako juniorskie więc chciałbym się podszkolić. Więc nie mam tej pracy już jest po ptakach.
Z góry dzięki !!
- Napisz zapytanie przypisujące każdemu klientowi wartość pierwszej wpłaty której dokonał. Nie możemy założyć że wpłaty są insertowane do tabeli payments chronologicznie.
Select
p.payment_client_id as klient,
min(p.payment_date) as 1st TX,
p.payment_value as value,
p.payment_currency as currency
From payments p
Group by p.payment_client_id
order by p.payment_client_id asc;
- Napisz zapytanie zwracające klientów wraz z dokonywanymi przez nich wpłatami. Dane powinny dotyczyć tylko wpłat na produkt o nazwie abonament. Dodatkowo do każdej wpłaty dodaj wartość poprzedniej wpłaty dokonanej przez tego samego klienta na ten sam produkt. Przykład co powinno zwracać zapytanie, kolory są wyłącznie pomocnicze:
NazwaKlienta DataWplaty WartoscWplaty WarPoprzWplaty
Adam 2020-01-01 50 NULL
Adam 2020-02-04 65 50
Adam 2020-03-02 70 65
Anna 2020-02-20 100 NULL
Anna 2020-04-20 150 100
Karol 2020-06-01 50 NULL
Select c.client_name as NazwaKlienta,
p.payment_date as DataWplaty,
p.payments_value as WartoscWplaty
Case
when count(p.payment_id) = 1
then null
when count(p.payment_id) =2
then p.payment.value = # tutaj brak pomysłu jak to rozwiązać
From payments p
join clients c
On c.client_ID = p.payment_client_id
Join products pr
On pr.product_id = p.payment_product_id
Where pr.product_name = ‘abonament’
Group by NazwaKlienta
Order by DataWplaty asc;
- Napisz zapytanie zwracające sumę wpłat dokonanych przez ostatnie pełne 12 miesięcy na produkty o nazwie abonament lub kredyt. Wyniki dla tych dwóch produktów powinny być w dwóch osobnych kolumnach. Przykład jak może wyglądać rozwiązanie:
Miesiąc WynikiAbonament WynikiKredyt
Listopad 1500 5600
Grudzień 1700 6000
Styczeń 2000 6100
Luty 1900 6000
Select year(p.payment_date)||monthofyear(p.payment_date) as rok_miesiąc, if(pr.product_name like ‘Abonament’, sum(p.payment_value),0) as WynikiAbonament, if(pr.product_name like ‘kredyt’, sum(p.payment_value),0) as WynikiKredyt
From payments p
Left join products pr
On pr.product_id = p.payment_product_id
Where p.payments_date between ‘2022-05-31’ and ‘2021-06-01’
Group by rok_miesiąc
Order by rok_miesiąc asc;