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

MySQL kolejność GROUP BY

Aruba Cloud - Virtual Private Server VPS
0 głosów
1,173 wizyt
pytanie zadane 27 listopada 2017 w SQL, bazy danych przez 123skiper Bywalec (2,170 p.)

Witam. Poniżej jest kod którego używam.

SELECT COUNT(scaner.Id) AS Count, products.Name AS Nazwa FROM scaner, products WHERE scaner.Code = products.Code GROUP BY scaner.Code

W tabeli scaner znajduje się kolumna Time. Czy istnieje możliwość sortowania wyników według największej wartości kolumny Time w grupie?

Dla przykładu w tabeli poniżej znajdują się trzy grupy (Code 2, 7, 8)

Id Code Time
1 2 15:00
2 8 13:00
3 7 17:00
4 2 14:00
5 8 12:00
6 2 22:00
7 7 8:00
8 8 10:00

Najnowszy (według kolumny Time) wiersz z grupy (grupowanie na podstawie Code) to 22:00.
Z grupy 17:00.
Z grupy 8 13:00

Chcę posortować te grupy wg. tej wartości Malejąco. W tym przykładzie kolejność to 2, 7, 8.

Mam nadzieję, że wytłumaczyłem to jasno :D Z góry dziękuję za wszystkie odpowiedzi

2 odpowiedzi

+2 głosów
odpowiedź 27 listopada 2017 przez jeremus Maniak (59,720 p.)
wybrane 27 listopada 2017 przez 123skiper
 
Najlepsza

musisz dodać :   order by max(scaner.time) - czyli funkcje agregujacą

całość tak :

select count(s.id),s.code,max(s.t) from scaner s,products c where c.code=s.code group by s.code order by max(s.t) desc

 

komentarz 27 listopada 2017 przez 123skiper Bywalec (2,170 p.)

Dzięki, działa smiley

+1 głos
odpowiedź 27 listopada 2017 przez mbabane Szeryf (79,260 p.)
Sprawdź klauzule ORDER BY dodawaną na końcu zapytania.
komentarz 27 listopada 2017 przez 123skiper Bywalec (2,170 p.)

W jaki sposób? ORDER BY scaner.Time DESC nie działa...

komentarz 27 listopada 2017 przez mbabane Szeryf (79,260 p.)
Tak
komentarz 27 listopada 2017 przez 123skiper Bywalec (2,170 p.)
Nie pomaga :(
1
komentarz 27 listopada 2017 przez mbabane Szeryf (79,260 p.)
Nie do konca tez rozumiem co chcesz osiagnac
komentarz 27 listopada 2017 przez 123skiper Bywalec (2,170 p.)

Chcę posortować grupy według największej wartości Time w tej grupie. Btw, dzięki za chęć pomocy :)

komentarz 27 listopada 2017 przez mbabane Szeryf (79,260 p.)
SELECT count(*) ilosc, scaner.code c, (SELECT max(time) FROM scaner WHERE scaner.code = c ) as maxTime
from scaner 
GROUP BY scaner.code  
ORDER BY maxTime DESC

Chyba coś takiego, trzeba było pobrać podzapytaniem max czas z danej grupy.

edit

Widze ze troche nadmiarowo to zrobilem.

Podobne pytania

+8 głosów
2 odpowiedzi 2,784 wizyt
pytanie zadane 15 sierpnia 2020 w Nasze projekty przez Mirosław Zelent Nałogowiec (34,780 p.)
+1 głos
2 odpowiedzi 1,055 wizyt
pytanie zadane 21 marca 2021 w SQL, bazy danych przez Paweł123 Nałogowiec (33,540 p.)
0 głosów
2 odpowiedzi 851 wizyt
pytanie zadane 1 grudnia 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (11,270 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,662 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...