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

Podzapytania SQL

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
+1 głos
385 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,600 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,600 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 126 wizyt
pytanie zadane 3 sierpnia 2017 w SQL, bazy danych przez raf123 Nowicjusz (130 p.)
0 głosów
1 odpowiedź 98 wizyt
pytanie zadane 8 maja w SQL, bazy danych przez Blds Nowicjusz (230 p.)
0 głosów
1 odpowiedź 873 wizyt
pytanie zadane 11 listopada 2017 w SQL, bazy danych przez Apocalipto Nowicjusz (120 p.)

89,728 zapytań

138,332 odpowiedzi

309,340 komentarzy

59,649 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 429p. - Argeento
  2. 427p. - nidomika
  3. 396p. - Mikbac
  4. 392p. - ssynowiec
  5. 390p. - Łukasz Eckert
  6. 387p. - TheLukaszNs
  7. 386p. - rucin93
  8. 382p. - Michal Drewniak
  9. 382p. - Marcin Harasimowicz
  10. 378p. - JMazurkiewicz
  11. 373p. - tokox
  12. 362p. - adrian17
  13. 359p. - overcq
  14. 350p. - Mawrok
  15. 345p. - Vinox
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...