• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Filtrowanie sprzedaży w SQL

Object Storage Arubacloud
0 głosów
82 wizyt
pytanie zadane 18 maja 2020 w SQL, bazy danych przez XavRock Obywatel (1,390 p.)

Witam mam kłopot z następującym zadaniem.

Kłopotem jest maksymalna wartość sprzedaży, nie jestem w stanie napisać tak aby działało poprawnie.

Mój kod, jeśli ktoś widzi błąd lub wie jak to zrobić. To bardzo proszę o wytłumaczenie.

SELECT 
cr.Name AS [Kraj], SalesTerritory AS [Obszar Sprzedaży], sa.DueDate AS [Rok],
Sprzedaż = (SELECT MAX(TotalDue))
FROM Person.CountryRegion cr

JOIN Sales.SalesTerritory pc ON  pc.CountryRegionCode = cr.CountryRegionCode 
JOIN Sales.SalesOrderHeader sa ON sa.TerritoryID = pc.TerritoryID
JOIN Sales.vSalesPersonSalesByFiscalYears sp ON sp.SalesPersonID = sa.SalesPersonID
WHERE DueDate > '2005-12-31' AND BillToAddressID != ShipToAddressID 
GROUP BY cr.Name , SalesTerritory , sa.DueDate , TotalDue
ORDER BY [Sprzedaż] ASC, [Rok] DESC;

 

komentarz 19 maja 2020 przez VBService Ekspert (253,100 p.)
edycja 19 maja 2020 przez VBService

Mógłbyś załączyć sql-a ze strukturą tablic i danych w nich zawartych.

Prawdopodobnie jako dane przykładowe została użyta, po analizie Twojego sql-a ta
baza danych (AdventureWorks Database).

Ta podana przez Ciebie lista 6-cio punktowa, to jest to co ma się też znaleźć w tej jednej kwerendzie, czy to mogą być "osobne zapytania".

MAX() - jest funkcją "agregującą" - użyta w ten sposób zwraca jeden rekord.

Moim zdaniem powinno być:


SELECT

cr.Name AS [Kraj], SalesTerritory AS [Obszar Sprzedaży], sa.DueDate AS [Rok],

MAX(TotalDue) OVER (PARTITION BY sa.TerritoryID) AS [Sprzedaż]

"... uporządkowane rosnąco latami i malejąco wartością sprzedaży." , czyli raczej tak

ORDER BY [Rok] ASC, [Sprzedaż] DESC;

 

komentarz 19 maja 2020 przez XavRock Obywatel (1,390 p.)

Tak zgadza się jest to baza danych AdventureWorks Database.

Co do tej listy 6 punktowej mam kłopot, bo nie wiem jak ona ma być rozpatrywana. Jedyne co wiem to to że wynik zapytania ma być taki jak na zdjęciu pod instrukcją.

Co do MAX(TotalDue), nie działa to taj jak powinno. Jestem obecnie w kropce, szukałem wszędzie, jedyne co znalazłem to Subquert.

Wyglądało to tak

Sprzedaż = (SELECT MAX(TotalDue))

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 757 wizyt
pytanie zadane 26 lipca 2018 w C# przez Siewier97 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 340 wizyt
pytanie zadane 17 grudnia 2022 w Rozwój zawodowy, nauka, praca przez siemanson Nowicjusz (150 p.)
0 głosów
0 odpowiedzi 38 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...