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

Podzapytania SQL

Object Storage Arubacloud
+1 głos
467 wizyt
pytanie zadane 20 listopada 2016 w SQL, bazy danych przez MlodyJavaS Użytkownik (500 p.)
Witam mam taki problem, a mianowcie mam do napisania zapytanie ktore zwroci listę osob ktore dały najwieksza ilosc maksymalnych ocen. Juz wyjasniam jak to ma wygladac na przykladzie:

Mam 2 userow:

MAREK i JAN

I zakladam ze MAREK ocenil pięc postow najwyzsza iloscia gwiazdek

Kolejna osoba czyli nasz JAN ocenila  cztery posty najwyzsza iloscia gwiazdek.

W rezultacie  zapytania powinnien pojawic sie : UserID, liczba_naj_ocen (czyli powinno wyswietlic sie

UserID -> 1, liczba_naj_ocen -> 5

ale gdy nasz JAN bedzie mial taka sama ilosc wystawionych maxymalnych ocen jak Marek to powinni pojawic sie

te dwie osoby. Prosze opomoc.

 

Narazie napisalem cos takiego ale nie dziala to jeszcze jak powinno

Select userID, count(ocenaID) as liczba_naj_ocen from ocena INNER JOIN user u USING(userID) WHERE wartosc = (SELECT Max(wartosc) FROM ocena) and u.plec='m' GROUP by userID

1 odpowiedź

+1 głos
odpowiedź 20 listopada 2016 przez Porcupine Nałogowiec (31,560 p.)

Coś w tym stylu:

SELECT TOP 1 WITH TIES
   userId,
   COUNT(*) liczba_naj_ocen
FROM
   ocena 
WHERE wartosc = najwyższa_ocena
GROUP BY userId
ORDER BY liczba_naj_ocen

gdzie najwyższa_ocena to jakaś stała ustalona przez Ciebie.

 

PS. Na przyszłość kod wrzucaj w blokach do tego przeznaczonych.

komentarz 20 listopada 2016 przez MlodyJavaS Użytkownik (500 p.)
Po tym poleceniu mam mnostwo bledow:

SELECT TOP 1 WITH TIES
   userID,
   COUNT(*) as liczba_naj_ocen
FROM
   ocena
WHERE wartosc = 5
GROUP BY userID
ORDER BY liczba_naj_ocen

 

 

Static analysis:

10 errors were found during analysis.

Unrecognized keyword. (near "WITH" at position 13)

Unexpected token. (near "TIES" at position 18)

Unexpected token. (near "userID" at position 27)

Unexpected token. (near "," at position 33)

Unrecognized keyword. (near "COUNT" at position 39)

Unexpected token. (near "(" at position 44)

Unexpected token. (near "*" at position 45)

Unexpected token. (near ")" at position 46)

Unrecognized keyword. (near "as" at position 48)

Unexpected token. (near "liczba_naj_ocen" at position 51)

Zapytanie SQL:

SELECT TOP 1 WITH TIES userID, COUNT(*) as liczba_naj_ocen FROM ocena WHERE wartosc = 5 GROUP BY userID ORDER BY liczba_naj_ocen LIMIT 0, 25

MySQL zwrócił komunikat:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1 WITH TIES
   userID,
   COUNT(*) as liczba_naj_ocen
FROM
   ocena
WHERE ' at line 1
komentarz 20 listopada 2016 przez Porcupine Nałogowiec (31,560 p.)

Prawdopodobnie dlatego, że używasz MySQL, a query, które napisałem jest w standardzie MS Server. Z tego co widzę, w MySQL moje TOP 1 WITH TIES zastępuje się limitem: 

StackOverflow

Pobaw się tym, to może zadziała :)

komentarz 20 listopada 2016 przez MlodyJavaS Użytkownik (500 p.)
A czy mojego nie daloby sie jakos przerobic, bo naprawde nie mam juz pomyslu ;/

Podobne pytania

+1 głos
0 odpowiedzi 173 wizyt
pytanie zadane 3 sierpnia 2017 w SQL, bazy danych przez raf123 Nowicjusz (130 p.)
0 głosów
1 odpowiedź 288 wizyt
pytanie zadane 8 maja 2022 w SQL, bazy danych przez Blds Użytkownik (830 p.)
0 głosów
1 odpowiedź 1,223 wizyt
pytanie zadane 11 listopada 2017 w SQL, bazy danych przez Apocalipto Nowicjusz (120 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

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

...