Select des höchsten Wertes

IchHH

Datenbank-Guru
Beiträge
284
Hallo liebe Community,

ich habe folgende Liste

1677594274909.png

und möchte nun, immer die Zeile haben die den höchsten Rang hat. Im Fall des Codes 482 und 495 ist es eben nur die Zeile 11 bzw. 12.
Wenn der Inhalt wie bei Zeile 8 und 9 fast identisch ist, dann hätte ich gerne einfach den ersten Wert.

Wie macht man das aber?
 
Werbung:
Im Fall von Zeile 8-10 den Höchsten Wert (also 1) UND einfach den ersten Eintrag (Vorlageprovisionsgebıhr oder Vorlageprovision). Dabei ist die Feldlänge immer unterschiedlich weshalb man nicht pauschal sagen kann nur die ersten 6 oder 10 Buchstaben.
Mit max(Rang) erreiche ich nur das Zeile 10 wegfällt.
 
Im Fall von Zeile 8-10 den Höchsten Wert (also 1) UND einfach den ersten Eintrag (Vorlageprovisionsgebıhr oder Vorlageprovision).
In Zeilen 8-10 ist der höchste Wert 2. Ungefähr kommst Du hin, wenn Du also nach code und Beschreibung gruppierst. Du mußt schon genau spezifizieren, was Du wie gruppieren willst, für die DB gibt es nicht 'fast' identisch -> dann gleich behandeln. Das mußt Du schon klar definieren.

Für mich sieht es so aus, als ob das alles Murks ist: der Code gibt offenbar die Beschreibung vor, nur wurde das nicht als eine weitere Tabelle mit PK und FK definiert. Shit in - shit out.
 
Für die Datenlieferung kann ich leider nichts.

Ich wünsche jedoch nur den höchsten Rang je Code zu ermitteln, gibt es den zwei Mal mit unterschiedlicher Beschreibung soll er nur die Beschreibung haben, die den kürzesten Text hat.
 
Das müsste doch über Window Funktionen gehen:

Code:
select code,beschreibung,rang
from (
  select code,beschreibung,rang, 
         dense_rank() over (partition by code order by rang) as rnk
  from listen
) t
where rnk = 1;
 
Hallo Castrop, das geht nun langsam in die richtige Richtung.

mit der Lösung ist das Problem mit der Beschreibung jedoch nicht gelöst:
1677599088498.png
 
Werbung:
RANK() würde ich nicht nehmen sondern ROW_NUMBER()
Code:
SELECT t.* FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY code ORDER BY rang,len(beschreibung) DESC,beschreibung) AS zeile,* FROM tabelle ) t WHERE t.zeile = 1
 
Zurück
Oben