Zapytanie- powtarzające się wartości max z innych kolumn. Wybranie dominujących wierszy

0

Witam
Prośba o pomoc z napisaniem zapytania. W temacie sql jeszcze raczkuję :p kombinowalem z case having count ale niestety troche mnie to przerosło.
Mam bazę 4+ kolumny i chcę posortować dane po największej wartości która się nie powtarza. Wszystkie dane są liczbowe. Poniżej podam przykład fragmentu bazy.
---Code -| age | class | height | ----b -- | --volume
--- 05 ----|----- -- | -- 1 -- | --- 18 -- | ---- 2 -- |-- 8
--- 02 ----|--- ---- | ---- ---- | -- 10 -- | ---- 3 -- |-- 1
--- 05 ----|--- 1 -- | --- --- | --- 3 --- | ---- 2 -- |--
--- 01 ----|- 12 -- | -- 2 -- | ---- ----- | --- 15 -- |-- 1
--- 01 ----|- 12 -- | -- 2 -- | ---- 8 -- | ---- 3 --- |-- 1
Dodam że część rekordów jest pusta.
Wynik jaki chcialbym uzyskac to:

--Code | age | class | height | b | volume
--- 01 ----|- 12 -- | -- 2 -- | ---- 8 ---- | ---- 3 --- |-- 1
--- 02 ----|--- ---- | ---- --- | ---- 10 -- | ---- 3 --- |-- 1
--- 05 ----|--- 1 -- | --- --- | --- 3 --- | ---- 2 -- |--

Czyli obiekt z kodem 01 występuje tylko 1 z największymi wartosciami.
Kolejność:
Najniższa wartość kodu, max age -jeśli się powtarza to max class-jeśli się powtarza to max height itd.
Mam nadzieję że problem opisałem w miarę możliwości czytelnie ;) pozdrawiam
Dziękuję z góry za odpowiedź.

0

Przygotuj dane w narzędziu typu http://sqlfiddle.com/ i podaj jaka baza. Szanse na pomoc będą większe.

0

Nie zrozumiałem opisu. Czego byś oczekiwał przy takich wartościach?

--- 01 ----|- 12 -- | -- 10 -- | ---- 30 -- | --- 20 --- |-- 70
--- 01 ----|- 12 -- | -- 20 -- | ---- 20 -- | ----10 --- |-- 80
--- 01 ----|- 12 -- | -- 30 -- | ---- 10 -- | ----30 --- |-- 90 
0

Najwieksza wartość z pierwszej kolumny. Jeżeli jest kilka takich samych(np01) to największa z drugiej(czyli kolejność 30, 20, 1)itd. Generalnie chodzi o posortowane moich rozrzuconych danych tak abym wiedział która powinna być najwyżej. Z twojej przykładowej tabeli kolejność była by 3 wiersz 2wiersz 1 wiersz.

0

Coś kręcisz z wyjaśnieniami. W oryginalnym poście, chciałeś 1 wiersz z grupy (grupa = ten sam CODE), teraz chcesz sortować wiersze?

  1. Wybranie jednego z grupy -> https://www.db-fiddle.com/f/2AQqm422Bq2dLuMz6dXe38/1
  2. Sortowanie -> https://www.db-fiddle.com/f/2AQqm422Bq2dLuMz6dXe38/3

Założyłem, że MySQL jest w wersji wspierającej funkcje analityczne.

edycja:
W ORDER BY w funkcji okienkowej trzeba użyć operatora DESC, tak by sortowało po wartościach w odpowiednim kierunku.
Nie wpływa to na kształt rozwiązania:

  • W ramach grup (podzielonych względem CODE)
  • numerujemy wiersze względem wartości kolejnych atrybutów (nowy atrybut rn)
  • i wybieramy pierwszy wiersz z grupy (rn=1)
0

Nic nie kręcę:p ciężko mi wyjaśnić. Postaram się jeszcze raz. W wyniku chciałbym otrzymać tabelę w której będzie wybrana najwieksza wartosc z 1 kolumny. Jeżeli ta wartość się powtarza to chciałbym otrzymać najwieksza wartosc z 2 kolumny. Jeżeli ona też się powtarza to największa z trzeciej kolumny itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1