Zadania pomocy - grupowanie zamówień na lata

Zadania pomocy - grupowanie zamówień na lata
  • Rejestracja: dni
  • Ostatnio: dni
0

Witajcie,
Pomożecie napisać zapytanie, które zwróci ilość zamówień w podziale na lata w formie jak poniżej.

2011 2012
68 32

IceHeart
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 312
0

Podaj więcej szczegółów oraz pokaż swój kod.

  • Rejestracja: dni
  • Ostatnio: dni
0

Mam baze o nazwie SZKOLENIE tabele KONTRAHENT , TOWAR, ZAMOWIENIE , ZAMOWIENIE_POZYCJE

KONTRAHENT ( KONTRAHENT_ID, PIERWSZE_IMIE, DRUGIE_IMIE, NAZWISKO,TELEFON,EMAIL)
TOWAR (TOWAR_ID,NUMER_KATALOGOWY, NAZWA,CENA,STAN,AKTYWNY)
ZAMOWIENIE (ZAM_ID, KONTRAHENT_ID, NUMER, DATA)
ZAMOWIENIE_POZYCJE (ZAM_POZ_ID, ZAM_ID, TOWAR_ID, CENA, ILOSC, WARTOSC)

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
0

Zakładam, że chodzi o zestawienie ilości zamówień per rok czy tak?
Jeśli tak to proponuję

Kopiuj
select sum(zam_poz.ilosc) ILE, zam.DATA rok 
  from zamowienie zam, zamowienie_pozycje zam_poz 
 where zam.zam_id = zam_poz.zam_id 
 group by zam.DATA 
 order by zam.DATA

oraz w zależności od tego co to za baza odpowiedniego pivota zamieniającego kolumny z wierszami abyś miał w takiej formie jak podałeś

Podaj konkretny DDL tabel, przykładowe dane, co to za dystrybucja bazy danych i wtedy podamy dokładniej rozwiązanie

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
1
Kopiuj
SELECT TO_CHAR(DATA, 'YYYY') rok, Count(*) FROM ZAMOWIENIA GROUP BY TO_CHAR(DATA, 'YYYY') ORDER BY TO_CHAR(DATA, 'YYYY')
  • Rejestracja: dni
  • Ostatnio: dni
0

woolfik pierwszy skrypt który napisałeś zadziałał. TO_CHAR nie rozpoznaje
Skrypt ma zwrócić ilość zamówień w podziale na lata np. w 2011 łączenie zostało zrobionych np. 10324 zamówienia.
W załączniku skrypt bazy.

woolfik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1611
0

Jak chcesz kogoś zawołać to dodaj @ przed nickiem czyli @woolfik, wtedy ktoś dostanie powiadomienie, że się go "woła" w danym temacie
To po pierwsze. Po drugie ze skryptu wnioskuję, że jest to MSSQL więc sql będzie wyglądał mniej więcej tak:

Kopiuj
SELECT SUM(zam_poz.ilosc) ILE, datepart(year, zam.DATA) rok 
  FROM zamowienie zam, zamowienie_pozycje zam_poz 
 WHERE zam.zam_id = zam_poz.zam_id 
   AND datepart(year, zam.DATA) = 2011
 GROUP BY datepart(year, zam.DATA) 
 ORDER BY datepart(year, zam.DATA)

w nawiązaniu do poprzedniego zapytania. Pytanie kolejne czy ma to być ilość zamówień (wtedy trzeba użyć count) czy suma towarów (wtedy zostaje sum)
Jeśli ilość zamówień to:

Kopiuj
SELECT count(zam.zam_id) ILE, datepart(year, zam.DATA) rok 
  FROM zamowienie zam
 WHERE datepart(year, zam.DATA) = 2011 --tu podajesz warunek na rok jeśli chcesz na wszystkie to wystarczy wywalić ten warunek
 GROUP BY datepart(year, zam.DATA) 
 ORDER BY datepart(year, zam.DATA)
  • Rejestracja: dni
  • Ostatnio: dni
0

Ok @woolfik rozwiązanie jest dobre dzięki za pomoc.
Mam jeszcze dwa zadania z tej bazy:
2. Napisać zapytanie, które zwróci łączną ilość zamówień 2 kontrahentów, którzy złożyli najwięcej zamówień.
np. I
26
3.Napisz zapytanie, które zwróci różnicę wartości między zamówieniem o najwyższej wartości, a zamówieniem o najniższej wartości.
np. R
105565.09

KiK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 88
0

poniżej masz link do identycznego zadania jak Twoje zadanie nr 3 tylko na bazie Northwind
http://anonco.pl/northwind-examples-e3-sql-group-by-groupby/
zmieniasz nazwy tabel i kolumn i gotowe

KiK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 88
0

Tutaj masz to samo zadania co Twoje zadanie nr 2 tylko na bazie Northwind
http://anonco.pl/northwind-examples-e4-sql-group-by-groupby-sum/

  • Rejestracja: dni
  • Ostatnio: dni
0

@KiK dzięki za info i pomoc.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.