Zadania MS SQL

P1
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:7
0

Witam,

Mogę prosić o pomoc w rozwiązaniu ?

Tabele jakich należy użyć w zapytaniu:
- dbo.ZAMOWIENIE
- dbo.ZAMOWIENIE_POZYCJE

Zadanie:
Napisz zapytanie, które zwróci dwie informacje:
- numer zamówienia;
- informacje czy wartość danego zamówienia jest większa/równa (1) czy mniejsza (0) od średniej wartości zamówienia.

Podpowiedź: Trzeba wyznaczyć jaka jest średnia wartość zamówienia na jaką kontrahenci zamawiają towary.

Przykładowe wyniki:
NUMER	       SR
ZAM/1/13		0
ZAM/10/13		0
ZAM/100/13	1
ZAM/11/13		0
ZAM/12/13		0
ZAM/13/13		0
ZAM/14/13		1
ZAM/15/13		0
ZAM/16/13		0
...
edytowany 1x, ostatnio: Początkujący123
HI
  • Rejestracja:około 13 lat
  • Ostatnio:5 dni
  • Postów:1857
0
  1. Piszesz o pomocy, oczekujesz gotowca?
  2. Piszesz na forum do konkretnej osoby?
P1
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:7
0

@hipekk chciałbym prosić o rozwiązanie

0

Wartość jak ma być obliczana ?

P1
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:7
0

@biały Orzeł może być za pomocą podzapytania lub JOIN

edytowany 1x, ostatnio: Początkujący123
0

Tak, ale liczy się je w sposób cena/ilość ?

HI
Wartość to zazwyczaj cena*ilość (a nie dzielenie).
P1
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:7
0

@biały Orzeł tak cena

KiK
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:88
0

Obliczenie średniej wartości zamówienia (na podstawie bazy Adventureworks) masz tutaj:
http://anonco.pl/adventureworks-examples-e1-sql-group-by-groupby-sum-avg/

reszta nie jest już taka trudna :)

edytowany 1x, ostatnio: KiK
KiK
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:88
0
KiK
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:88
0

Żeby za każdym razem nie wykonywało się zapytanie obliczające średnią zamówień to możemy wrzucić to zapytanie do zmiennej i później wykorzystać tą zmienną w zapytaniu głównym. Link poniżej:
http://anonco.pl/adventureworks-examples-e3-sql-group-by-groupby-sum-avg-local-variable/

P1
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:7
0

@KiK a z tym zadaniem pomożesz?

Tabele jakich należy użyć w zapytaniu:
- dbo.KONTRAHENT
- dbo.ZAMOWIENIE

Zadanie:
Napisz zapytanie, które zwróci dwie informacje:
- ilości kontrahentów, którzy złożyli choć jedno zamówienie;
- ilość kontrahentów, którzy nie złożyli zamówienia.

Przykładowe wyniki:
KONTRAHENCI Z ZAM		KONTRAHNECI BEZ ZAM
16
Marcin.Miga
  • Rejestracja:prawie 17 lat
  • Ostatnio:13 dni
  • Postów:2792
0
Kopiuj
SELECT Count(distinct kontrahent_id) FROM zamowienie
Kopiuj
SELECT Count(k.id) FROM kontrahenci k LEFT JOIN zamowienie z ON k.id=z.kontrahent_id WHERE z.kontrahent_id IS NULL
P1
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:7
0

@Marcin.Miga w drugim skrypcie pojawia się błąd "Invalid column name 'id'
Jak w pierwszym dodać nazwę tabeli żeby nazywała się KONTRAHENCI Z ZAM dodaje AS KONTRAHENCI Z ZAM ale nazwa się nie dodaje.
W tym zadaniu muszą zostać zwrócone dwie kolumny KONTRAHENCI Z ZAM i KONTRAHENCI BEZ ZAM czyli trzeba połączyć te skrypty jakoś.

P1
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:7
0

SELECT COUNT(DISTINCT kontrahent_id) AS KONTRAHENCI_Z_ZAM
FROM zamowienie

SELECT COUNT(*) AS KONTRAHENCI_BEZ_ZAM
FROM KONTRAHENT k
LEFT JOIN zamowienie z ON k.KONTRAHENT_ID=z.kontrahent_id
WHERE z.kontrahent_id IS NULL

jak połączyć te skrypty żeby po zazanczeniu całości wyświetliły się 2 kolumny obok siebie ?

woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 17 godzin
  • Postów:1598
2
Początkujący123 napisał(a):

SELECT COUNT(DISTINCT kontrahent_id) AS KONTRAHENCI_Z_ZAM
FROM zamowienie

SELECT COUNT(*) AS KONTRAHENCI_BEZ_ZAM
FROM KONTRAHENT k
LEFT JOIN zamowienie z ON k.KONTRAHENT_ID=z.kontrahent_id
WHERE z.kontrahent_id IS NULL

jak połączyć te skrypty żeby po zazanczeniu całości wyświetliły się 2 kolumny obok siebie ?

Kopiuj
select (SELECT COUNT(DISTINCT kontrahent_id) FROM zamowienie) "KONTRAHENCI Z ZAM" , 
       (SELECT COUNT(*) FROM KONTRAHENT k LEFT JOIN zamowienie z ON k.KONTRAHENT_ID=z.kontrahent_id WHERE z.kontrahent_id IS NULL) "KONTRAHENCI BEZ ZAM"
edytowany 1x, ostatnio: woolfik
KiK
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:88
0

Ilość kontrahentów (w tym przypadku klientów, bo przykład jest na bazie Northwind) którzy nie złożyli żadnego zamówienia masz tutaj:
http://anonco.pl/northwind-examples-sql-count-left-join-is-null-isnull-aw32/

KiK
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 lata
  • Postów:88
0

Sorki zapomniałem, że to ma być w jednym zapytaniu (przykład także na bazie Northwind). Link tutaj:
http://anonco.pl/northwind-examples-sql-count-left-join-is-null-isnull-aw33/

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.