ORACLE - Unterabfrage, wie?
Beate Mielke
- datenbank
Hallo ForumerInnen,
folgende Abfrage unter ORACLE funktioniert nicht, weil der where-Teil am Ende steht:
select a.href, count(*)*100/b.spalte as QUANTUM from TABELLE1 a, TABELLE2 b group by a.href, b.spalte order by QUANTUM desc, href where rownum < 16;
1.) Wer kann mir sagen, wie ich den Ausdruck modifizieren muß, damit von dem Gesamtergebnis wirklich nur die ersten 15 Zeilen ausgegeben werden? Der Ausdruck "group by" MUSS vor dem where-Teil kommen. Vielleicht über eine Zwischentabelle?
2.)Unter ORACLE wird mir das Ergebnis (wenn es denn mal ohne where angeschaut wird) mit zuvielen Nachkommastellen ausgegeben. Wie kann ich errreichen daß die Ausgabewerte nur zwei Nachkommastellen haben?
Gruß
Beate Mielke
Hallo Beate,
zu Deiner ersten Frage
select a.href, count(*)*100/b.spalte as QUANTUM from TABELLE1 a,
TABELLE2 b group by a.href, b.spalte order by QUANTUM desc, href
HAVING rownum < 16;
------
Du kannst due Ausgabe nach einer Gruppierung nicht mit einer WHERE-
Klausel einschränken. Dafür gibt es HAVING. Mit WHERE kannst Du lediglich
die Ergebnisse einschränken, die danach von GROUP BY zusammengefasst werden.
Zu Deiner 2. Frage
SELECT TRUNC(123.456, 2) FROM DUAL Ergibt 123.45
Tschau, Stefan
Hallo ForumerInnen,
folgende Abfrage unter ORACLE funktioniert nicht, weil der where-Teil am Ende steht:
select a.href, count(*)*100/b.spalte as QUANTUM from TABELLE1 a, TABELLE2 b group by a.href, b.spalte order by QUANTUM desc, href where rownum < 16;
1.) Wer kann mir sagen, wie ich den Ausdruck modifizieren muß, damit von dem Gesamtergebnis wirklich nur die ersten 15 Zeilen ausgegeben werden? Der Ausdruck "group by" MUSS vor dem where-Teil kommen. Vielleicht über eine Zwischentabelle?
2.)Unter ORACLE wird mir das Ergebnis (wenn es denn mal ohne where angeschaut wird) mit zuvielen Nachkommastellen ausgegeben. Wie kann ich errreichen daß die Ausgabewerte nur zwei Nachkommastellen haben?
Gruß
Beate Mielke
Hallo Stefan,
select a.href, count(*)*100/b.spalte as QUANTUM from TABELLE1 a,
TABELLE2 b group by a.href, b.spalte order by QUANTUM desc, href
HAVING rownum < 16;
ich hatte mich schon gefreut, daß die Lösung so einfach sein soll - aber leider -
kommt jetzt genau bei HAVING eine Fehlermeldung :-(
Gruß
Beate
Hallo Beate
select a.href, count(*)*100/b.spalte as QUANTUM from TABELLE1 a, TABELLE2 b group by a.href, b.spalte order by QUANTUM desc, href where rownum < 16;
Wenn mich meine SQL Kenntnisse nicht ganz verlassen haben dann hast Du bei der order by un bei der where Bedingung die Tabelle vergessen.
select a.href, count(*)*100/b.spalte as QUANTUM from TABELLE1 a, TABELLE2 b group by a.href, b.spalte order by QUANTUM desc, a.href where a.rownum < 16;
Gruß
Jürgen