MS SQL - zliczanie pozycji

0

Witam

Potrzebuje wsparcia z kodem
mamy dane

Data produkt sprzedaż
24.07.2019 masło 5
23.07.2019 masło 5
22.07.2019 masło 5

23.06 .2019 masło 3
22.06.2019 masło 30 ...

muszę napisać kwerendę która da mi
Data produkt sprzedaż za 30 dni ( czyli od daty dzisiejszej tj 24.07.2019 do 23.06.2019 kolejna linia sprzedaż od 23.07.2019 do 22.06.2019 ....)
np
24.07.2019 masło (5+5+5+3)
23.07.2019 masło ( 5+5+3+30 )
22.07.2019 masło ( 5+3+30+... )

Nie wiem jak za to się zabrać mecze się już z godzinę ale dziś chyba mój mózg nie pracuje dobrze

0

Może tam znajdziesz odpowiedź: https://stackoverflow.com/a/23546182 😉

0

Grupowanie po dacie i suma z ilości. Dodatkowo musisz założyć warunek na daty.

0

@tomek Pycia,
to mniej więcej miał oby tak wyglądać ?

SELECT produkt , data,
skumulowane_30_dni=( select sum(sprzedaz) as sprzedaz
FROM dbo.dane 
WHERE data BETWEEN (data , data-30)
)
FROM dbo.dane 

bo to chyba dobrze nie działa

0

Ty chcesz wyliczyć sumę po produkcie na każdy dzień czy sumę skumulowaną z ostatnich 30 dni? Czy suma skumulowana ma być liczona na każdy dzień?

Poczytałem jeszcze raz to wszystko i zacznijmy od tego, że to twoje zapytanie nie jest poprawne składniowo: po pierwsze https://docs.microsoft.com/en-us/sql/t-sql/language-elements/between-transact-sql?view=sql-server-2017 a po drugie https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-2017 (pod schemacie dbo wywnioskowałem że chodzi o MSSQL Server ). Nie możesz sobie od daty odjąć po prostu 30, bo nie wiadomo 30 czego odejmujesz - lat, dni, miesięcy, itp. Po drugi to musisz powiązać zapytanie z podzapytaniem po produkcie, tak to ci wyliczy sumę dla wszystkich produktów z tych 30 dni. Pytanie tez, czy nie masz kilku wpisów dla tego samego produktów na jeden dzień.

0

Tomek
tak dla mnie ważne jest żeby przeprowadzić analizę danych sprzedażowych i potem dla każdego dnia móc miedz obliczone Pareto z 30 dni
Czyli muszę mieć dla każdej daty dla każdego produktu sumę sprzedaży za 30 dni w wstecz
czyli dla

produkt data suma sprzedaży (od daty do daty wstecz 30 dni )
masło 2019-07-26 ( suma sprzedażny 2019-07-26 - 2019-06-25)
masło 2019-07-25 ( suma sprzedaży 2019-07-25 - 209-06-24)
*
*

0

Dzięki
@Marcin.Miga:
właśnie będę to sprawdzał zobaczmy jak pójdzie 400 tysięcy produktów dla 100 dni :)

0

Super działa . i nawet szybko została wykonana kwerenda.
Teraz dla każdego dnia dla każdego produktu muszę podac Pareto z podziałem na AAAA- 35% wartości , A 80% wartości B do 95% wartości C 95- 100% D - zero sprzedaży
i niestety jak odpalam kwerendę to ma skumulowane wartości zamiast skalkulowanych dla wszystkich dat ;/

select ee.indeks,mm.data, ee.pozycja,
 iif (ee.skumulowane<0.35,'AAAA',
	iif(ee.skumulowane<0.8,'A',
	iif(ee.skumulowane<0.95,'B',
	iif(mm.wartosc_sprzedazy_30_dni is null  ,'D',
	'C')))) as Pareto,
	_ChangeDate=CURRENT_TIMESTAMP


 from(

					select dd.pozycja,dd.indeks,
					cast (sum(dd.procent) over (order by pozycja ) as float) as skumulowane


					from(
							SELECT
							  row_number() OVER (ORDER BY cc.procent DESC)  AS pozycja,
							  cc.indeks,
							 cc.procent
  
							FROM 
							 (
							select bb.indeks,
								cast(bb.wartosc_sprzedazy_30_dni as float)/((
									select  cast (sum ( aa.wartosc_sprzedazy_30_dni)as float) 
									as value
									from dbo.sprzedaz_30dni_dotylu as aa) )  as procent

							from dbo.sprzedaz_30dni_dotylu as bb
							group by bb.data, bb.indeks,bb.wartosc_sprzedazy_30_dni
							) as cc
					)as dd
		) as ee



 left join dbo.sprzedaz_30dni_dotylu as mm on mm.indeks=ee.indeks

order by ee.pozycja

co robie nie tak ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1