Skocz do zawartości
maciek fly

[sql] Prosba O Pomoc Z View/tabelami

Rekomendowane odpowiedzi

witam wszystkich,

sa 2 tabele: oceny i studenci (polaczone przez nr_stud)

chcialbym wybrac studentow posiadajacych najwyzsze srednie w swoich grupach (nr_kier)

zrobilem to uzywajac view (probowalem przez group by, having.. ale

jedyne co udalo mi sie osiagnac to studentow posiadajacych maksymalne srednie

biorac pod uwage wszystkich studentow, nie w danej grupie)

 

zrobilem to tak:

///////////////////////////////

CREATE VIEW temp AS

SELECT s.nr_kier AS kierunek,

s.nazwisko AS name,

avg( o.ocena ) AS srednie

FROM oceny o JOIN studenci s ON s.nr_stud = o.nr_stud

///////////////////////////////

i nastepnie:

///////////////////////////////

select kierunek, name, max(srednie)

from temp

group by kierunek

///////////////////////////////

 

dziala w porzadku, pokazuje studentow z danych grup z maks srednia,

ale (jak zawsze coś):

jesli ilosc studentow z dana srednia maksymalna jest wieksza niz 1,

to pokazuje pierwszego (alfabetycznie).

 

moje pomysly na pokazanie wszystkich studentow z maksymalna srednia w danej grupie sie skonczyly.

 

moglby ktos doradzic jakies rozwiazanie?

 

pozdrawiam.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

SELECT s.nr_kier AS kierunek,

s.nazwisko AS name,

avg( o.ocena ) AS srednie

FROM oceny o JOIN studenci s ON s.nr_stud = o.nr_stud

Tu brakuje mi GROUP BY, ale skoro dziala to pewnie zapomniales przepisac do posta...

 

Sprobuj drugie zapytanie wykonac tak:

 

SELECT kierunek, name, srednieFROM temp t1WHERE srednie = (SELECT MAX(srednie) FROM temp t2 WHERE t1.kierunek = t2.kierunek)ORDER BY kierunek, name

Mozna to przepisac bez podzapytania (bedzie wydajniej), ale to juz wyzsza szkola jazdy i z glowy tego nie zrobie, wiec potrzebowalbym przykladowy zestaw danych. Jesli chcesz zobaczyc tez taka wersje to wystaw jakis pliczek z odpowiednimi CREATE'ami oraz INSERT'ami, tak zebym mogl sobie baze odtworzyc u siebie. To moze jednak potrwac, niecodziennie miewam wene na SQL'a :)

 

PS. nastepym razem podaj o jaka baze chodzi, przy tym stopniu zaawansowania roznice moga juz byc znaczace.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...