Veröffentlicht: von

  • COUNT(Spalte) zählt die von NULL verschiedenen Werte in einer Spalte, COUNT(*) auch die Zeilen, die komplett NULL sind.
  • Alle Gruppenfunktionen ignorieren NULL-Werte im Gegensatz zu den Operatoren +, – * und  /: 9 + NULL= NULL
  • Aggregatfunktionen (Synonym: Gruppenfunktionen) können mit Single-Rowfunktionen geschachtelt werden. SELECT TRUNC(AVG(gehalt)) FROM angestellte, Tiefe der Schachtelung ist beliebig
  • Zwei Gruppenfunktionen können aufeinander angewendet werden, aber nicht drei: Zulässig ist SELECT COUNT(AVG(Gehalt) ) FROM angestellte GROUP BY GEHALT, aber nicht SELECT COUNT(AVG(MIN(Spalte))) FROM angestellte GROUP BY GEHALT und auch nicht SELECT COUNT(AVG(Gehalt));  ohne group BY.
  • Es gibt eine zweite Mittelwertfunktion MEDIAN neben AVG, d.h. SELECT median(gehalt), avg(gehalt)  from angestellte; ergibt zwei verschiedenen Werte. Die MEDIAN-Funktion sortiert numerische Werte in der Reihenfolge aufsteigend und nimmt bei einer ungerade Zahl den mittleren, sonst eine interpolierten Wert dazwischen
  • AVG und MEDIAN arbeiten nur mit numerischen Werten..
  • Die Rank -Funktion gibt aus, an wievielter Stelle ein Wert steht: SELECT RANK(4000) WITHIN GROUP (ORDER BY gehalt) FROM  angestellte  bedeutet, dass das Gehalt 4000 die 12. Stelle einnimmt. Der Parameter RANK(Wert) kann nur ganzzahlige Werte, ohne Nachkommastellen, aufnehmen .
  • FIRST und LAST (s.u.) gibt nur den ersten bzw. den letzten Wert einer sortierten Folge von Werten aus.
  • Gruppenfunktionen können nicht in der WHERE -Klausel verwendet werden.
  • having muss immer nach where stehen
  • siehe auch: DBWiki für CUBE, ROLLUP, GROUPING
  • ORDER BY in Kombination mit GROUP BY hat einige Einschränkungen: Es kann nur ein ORDER BY geben auf Ausdrücken aus der GROUP BY-Klausel, Ausdrücken aus der SELECT-Liste, über Aggregatfunktionen oder über die USER, SYSDATE und UID.

Zum Ausprobieren:

Login advbs06.gm.fh-koeln.de, benutzer: FAHRRAD

SELECT RANK(4000) WITHIN GROUP (ORDER BY gehalt) from angestellte;

SELECT MAX(gehalt) KEEP (DENSE_RANK FIRST Order BY GEHALT) FROM angestellte;

SELECT MAX(gehalt) KEEP (DENSE_RANK LAST  Order BY GEHALT) FROM angestellte;

Veröffentlicht: von

  • Oracle hat die Pseudocolumns ROWNUM und ROWID, die immer vorhanden sind und auch abgefragt werden können.
  • Anstelle von DISTINCT kann auch UNIQUE in einer Abfrage genutzt werden, also z.B. SELECT UNIQUE Nachname FROM angestellte;
  • DISTINCT und können allerdings in einer SELECT-Abfrage nur einmal verwendet werden: SELECT DISTINCT Nachname, DISTINCT vorname  from angestellte; ist nicht zulässig.
  • Die alte Regel Punktrechnung geht vor Strichrechnung gilt nicht nur in der Mathematik sondern auch in SQL: 200 + 12*3 = 236.
  • Wenn ein SELECT * FROM TAB ausgeführt wird, kann man daneben keine andere Spalten, also auch nicht SELECT ROWNUM, * FROM TAB; ausführen.

Veröffentlicht: von

DDL:

  • Create
  • Alter
  • Drop
  • Rename
  • Truncate
  • Grant
  • Revoke
  • Flashback
  • Purge
  • Comment

DML:

  • Select
  • Insert
  • Update
  • Delete
  • Merge

TCL:

  • Commit
  • Rollback
  • Savepoint

Veröffentlicht: von

  • Constraints
  • Indexes
  • Roles
  • Sequences
  • Synonyms
  • Tables
  • Users
  • Views

(Seite 47)

Veröffentlicht: von

  • Data Dictionary (ausführlicher)
  • User Access mit Rollen (ausführlicher)
  • Flashback
  • Externe Tabellen
  • Function-based Indexes
  • Multitable INSERTs
  • Cube, Rollup, Grouping Sets
  • Zeitzonen
  • With Klausel
  • Reguläre Ausdrücke