Ergebnis 1 bis 20 von 26

Thema: [SQL] Eine bestimmte Zeile ausgeben

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Sollte eigentlich auch ohne solche Spezialkonstrukte gehen (kann ich jetzt für Oracle natürlich nicht garantieren).

    Überleg mal, was du suchst, ist die Zeile x, wo die Anzahl der Zeilen, bei denen ein bestimmter Wert kleiner ist als der der Zeile x, 4 ist.

    Kleiner Hint: Die Anzahl zählt man mit...

    Mal die Lösung, die ich spontan auf meiner WebSeiten-Datenbank gemacht habe (Tabelle heißt hier "page", die Spalte, nach der verglichen wird, ist die page_id):

  2. #2
    Zitat Zitat von Irian Beitrag anzeigen
    Code (SQL):
     
    SELECT * FROM page p WHERE (SELECT count(*) FROM page q WHERE q.page_id < p.page_id) = 4;
     
    Ist das nicht O(N^2)?

    Ich hätte noch diese Lösung anzubieten:

    Code (SQL):
     
    SELECT col1, col2, ... 
    FROM (SELECT col1, col2, ..., ROWNUM rn 
          FROM (SELECT * 
                FROM tab 
                ORDER BY coln DESC) 
          WHERE ROWNUM < 6 )
    WHERE  rn = 5;
     


    Das sollte für große Datenbanken schneller sein, wenn ich richtig liege, ist aber weniger elegant, da die Kolumnen explizit angegeben werden müssen. Was es macht ist folgendes:

    1. Wähle alles aus tab und sortiere absteigend nach coln.
    2. Wähle die ersten 5 Reihen.
    3. Wähle die 5. Reihe.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •