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

Pytanie SQL - Wyznacz studenta, który jest zapisany na największą liczbę kursów

Object Storage Arubacloud
0 głosów
835 wizyt
pytanie zadane 28 kwietnia 2021 w Systemy operacyjne, programy przez Bonjoour Nowicjusz (180 p.)
Witam

Na wstępie dodam, że jestem bardzo początkujący i dopiero się uczę :)

Muszę napisać pytanie do bazy w SQL Developer, a mianowicie muszę Wyznaczyć studenta które jest zapisany największą liczbą kursów.

Sporo siedziałem nad tym problem w różny sposób zagnieżdżając SELECT

SELECT Studenci.Nazwisko
FROM Studenci
Group by Studenci.Nazwisko
HAVING COUNT(Studenci.NrIndeksu) = (SELECT MAX(COUNT(r.NrIndeksu))
FROM Rejestracje r GROUP BY r.nrIndeksu)

------------------------------------------------------------------------

 

SELECT Studenci.Nazwisko, COUNT(Studenci.NrIndeksu)
FROM Studenci
JOIN Rejestracje ON Studenci.NrIndeksu = Rejestracje.NrIndeksu
GROUP BY Studenci.Nazwisko
HAVING COUNT(Studenci.NrIndeksu) IN (SELECT MAX(COUNT(NrIndeksu))
FROM Rejestracje GROUP BY Studenci.Nazwisko)

 

 

Będę wdzięczny za pomoc
komentarz 28 kwietnia 2021 przez Psz3mo Mądrala (5,030 p.)
Najlepiej podaj jakie kolumny znajdują się w Tabelach z których będziesz korzystał, bo widzę że próbujesz liczyć na 'NrIndeksu' a nie na liczbie kursów
komentarz 28 kwietnia 2021 przez Bonjoour Nowicjusz (180 p.)
Liczę na NrIndeksu gdyż jest to tabela łącząca tabelę Studenci oraz Tabelę Rejestrację.

W tabeli Studenci NrIndeksu przedstawia każdego studenta, w tabeli Rejestracje po za kolumną NrIndeksu, mamy jeszcze IdKursu, stąd jeden NrIndeksu może pojawić się kilkukrotnie w tabeli Rejestracje .
komentarz 28 kwietnia 2021 przez Psz3mo Mądrala (5,030 p.)
edycja 28 kwietnia 2021 przez Psz3mo
Dobrze, źle mnie zrozumiałeś, gdzie w tabelach jest informacja o liczbie kursów?

Najlepiej przedstaw bazę w formie tabeli np:

Tabela Studenci: imie, nazwisko....

Tabela ........

I zaznacz klucze obce i relacje ----- albo wyślij zdjęcie jej diagramu
komentarz 28 kwietnia 2021 przez Bonjoour Nowicjusz (180 p.)
Kursy są 4 w tabeli Kursy w kolumnie IdKursu.

A reszta tak jak pisałem, w tabeli Rejestracje : - IdKursu, -NrIndeksu.
komentarz 28 kwietnia 2021 przez Bonjoour Nowicjusz (180 p.)

@Psz3mo, ​​​​​​​

1 odpowiedź

0 głosów
odpowiedź 28 kwietnia 2021 przez SzkolnyAdmin Szeryf (86,360 p.)

W dialekcie MySQL/MariaDB:

SELECT Studenci.Nazwisko, Count(Rejestracje.NrIndeksu)
    FROM Studenci JOIN Rejestracje
    ON Studenci.NrIndeksu=Rejestracje.NrIndeksu
    GROUP BY Studenci.NrIndeksu
    ORDER BY 2 DESC
    LIMIT 1 

 

komentarz 28 kwietnia 2021 przez Bonjoour Nowicjusz (180 p.)
Dostaje err

SQL command not properly ended
komentarz 28 kwietnia 2021 przez PreZmyK Pasjonat (21,470 p.)
Jak używasz ORACLE to zmień LIMIT 1 na FETCH FIRST 1 ROWS ONLY

Jak zadanie wymaga użycia funkcji MAX to będzie trochę SELECtów.
komentarz 28 kwietnia 2021 przez Bonjoour Nowicjusz (180 p.)
SELECT TOP 1 Studenci.Nazwisko, Count(Rejestracje.NrIndeksu)
    FROM Studenci JOIN Rejestracje
    ON Studenci.NrIndeksu=Rejestracje.NrIndeksu
    GROUP BY Studenci.NrIndeksu
    ORDER BY 2 DESC

 

Czy chodzi o takie rozwiązanie ? Bo jeśli tak, to również nie działa, z błędem "FROM keyword not found where expected"
komentarz 29 kwietnia 2021 przez Psz3mo Mądrala (5,030 p.)

Spróbuj cos takiego:

SELECT * FROM (SELECT Studenci.Nazwisko, Count(Rejestracje.NrIndeksu) FROM Studenci JOIN Rejestracje ON Studenci.NrIndeksu=Rejestracje.NrIndeksu GROUP BY Studenci.NrIndeksu ORDER BY 2 DESC) WHERE ROWNUM = 1;

 

komentarz 4 maja 2021 przez Bonjoour Nowicjusz (180 p.)
Udało się rozwiązać problem następującym zapytaniem :

 

 SELECT s.Nazwisko, COUNT(*) Liczba
FROM Studenci s
JOIN Rejestracje r ON s.NrIndeksu = r.NrIndeksu
JOIN Kursy k ON r.IdKursu = k.IdKursu
GROUP BY s.Nazwisko
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
FROM Rejestracje GROUP BY NrIndeksu);

Podobne pytania

+1 głos
1 odpowiedź 211 wizyt
pytanie zadane 20 kwietnia 2016 w SQL, bazy danych przez Lukasz95 Bywalec (2,160 p.)
0 głosów
1 odpowiedź 200 wizyt
pytanie zadane 20 lutego 2016 w SQL, bazy danych przez MatiiTv Gaduła (3,790 p.)
0 głosów
1 odpowiedź 230 wizyt

92,535 zapytań

141,376 odpowiedzi

319,449 komentarzy

61,920 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!

...