Kategorie szkoleń | Egzaminy | Kontakt
  • 4
  • 4
  • 61

Jak policzyć np.  sprzedaż dla grup produktów (w jednej grupie mają być produkt 1, produkt2, w kolejnej produkt 3, w kolejnej produkt 4 i produkt5). Na produkcie nie mam informacji, do jakiej grupy należy. Wynik chcę uzyskać przez użycie select.

Dane Sprzedażowe

Produkt1 1 000

Produkt1 1 000

Produkt1 1 000

Produkt2  500

Produkt3 2000

......

Wynik: Sprzedaż

Grupa 1 - 10 000

Grupa 2 - 2 000

Grupa 3 - 7 000

Ania
  • Zapytał
  • @ Ania | 02.07.2014
    • 3
    • 0
    • 6

Odpowiedzi (4)

  • 0

Jakie masz struktury tabel, skoro nie ma informacji na produkcie?

Jeśli są to 2 tabele, to musisz zrobić JOIN-a i później group by.

Jacek_Górski
  • Odpowiedział
  • @ Jacek_Górski | 02.07.2014
    • laureat
    • 27
    • 5
    • 33
  • 2

Przykład oczywiście uproszczony, jest jedna tabela mówiąca o sprzedaży. Group by, ale co ? Bo jakby była informacja gdzieś innej tabeli jaki produkt, z jakiej grupy, to OK - join i group by grupa.

Ania
  • Odpowiedział
  • @ Ania | 02.07.2014
    • 3
    • 0
    • 6
  • 0

Jeżeli dobrze rozumiem pytanie, to chcemy uzyskać na podstawie nazwy produktu przydział do grupy, a następnie agregację po nazwie grupy. Jeżeli Produkt1 i Produkt2 należą do jednej grupy, a Produkt3 do następnej, można to zrealizować na dwa proste sposoby - jeżeli nazw produktów jest niewiele, używając instrukcji CASE lub jeżeli mamy wiele danych, tworząc tabelę tymczasową z 2 polami Produkt i Grupa, a następnie łącząc ją za pomocą JOIN-a z podaną tabelą.

Przykład pierwszego rozwiązania poniżej:

-- 1. Utworzenie Tabeli
CREATE TABLE Produkty 
	(nazwa varchar(20),wartosc int);
 
INSERT INTO Produkty
(nazwa, wartosc)
VALUES
('Produkt1', 1000),
('Produkt1', 1000),
('Produkt1', 1000),
('Produkt2',  500),
('Produkt3', 2000);

--2. Grupowanie według nazw produktów
WITH prodGrup(grupa,wartosc) AS (SELECT CASE nazwa
      WHEN 'Produkt1' THEN 'Grupa1'
      WHEN 'Produkt2' THEN 'Grupa1'
      WHEN 'Produkt3' THEN 'Grupa2'
      END, wartosc
      FROM Produkty )
SELECT grupa,SUM(wartosc)
FROM prodGrup
GROUP BY grupa
  • Odpowiedział
  • @ | 02.07.2014
  • TRENER ALTKOM AKADEMII
  • 0

Juz znalazłam rozwiązanie można zrobić Case w group by.

Ania
  • Odpowiedział
  • @ Ania | 03.07.2014
    • 3
    • 0
    • 6