Ausführliche Erläuterung der einzeiligen PL/SQL-Funktionen und Gruppenfunktionen. Eine Funktion ist ein Programm, das null oder mehr Parameter und einen Rückgabewert hat. Oracle verfügt über eine Reihe integrierter Funktionen in SQL,
Diese Funktionen können als SQL- oder PL/SQL-Anweisungen bezeichnet werden. Funktionen sind hauptsächlich in zwei Kategorien unterteilt:
Gruppenfunktionen für Einzelzeilenfunktionen In diesem Artikel wird erläutert, wie Einzelzeilenfunktionen verwendet werden und welche Regeln für deren Verwendung gelten.
Einzelzeilenfunktion in SQL
SQL und PL/SQL verfügen über viele Arten von Funktionen, darunter Zeichen-, Zahlen-, Datums-, Konvertierungs- und gemischte Funktionen zur Verarbeitung einzelner Datenzeilen.
Daher können diese zusammenfassend als einzeilige Funktionen bezeichnet werden. Diese Funktionen können in SELECT-, WHERE-, ORDER BY- und anderen Klauseln verwendet werden.
Das folgende Beispiel enthält beispielsweise einzeilige Funktionen wie TO_CHAR, UPPER und SOUNDEX.
SELECT ename,TO_CHAR(hiredate,'day,DD-Mo-YYYY')
VON emp
Wo UPPER(ename) Like 'AL%'ORDER BY SOUNDEX(ename)
Einzelzeilenfunktionen können auch in anderen Anweisungen verwendet werden, z. B. in der SET-Klausel von update, der VALUES-Klausel von INSERT und der WHERE-Klausel von DELET.
Bei der Zertifizierungsprüfung wird besonderes Augenmerk auf die Verwendung dieser Funktionen in der SELECT-Anweisung gelegt, daher liegt unser Augenmerk auch auf der SELECT-Anweisung.
NULL- und einzeilige Funktionen Das Verständnis von NULL kann zunächst schwierig sein, und selbst eine sehr erfahrene Person kann dadurch verwirrt sein.
Der NULL-Wert stellt unbekannte Daten oder einen Nullwert dar. Jeder Operand eines arithmetischen Operators ist ein NULL-Wert und das Ergebnis ist ein NULL-Wert.
Diese Regel gilt auch für viele Funktionen. Nur CONCAT, DECODE, DUMP, NVL und REPLACE können Nicht-NULL-Werte zurückgeben, wenn sie mit NULL-Parametern aufgerufen werden.
Unter diesen ist die NVL-Funktion die wichtigste, da sie NULL-Werte direkt verarbeiten kann.
NVL hat zwei Parameter: NVL(x1,x2), sowohl x1 als auch x2 sind Ausdrücke. Wenn x1 null ist, wird X2 zurückgegeben, andernfalls wird x1 zurückgegeben.
Werfen wir einen Blick auf die Emp-Datentabelle. Sie enthält Gehalt und Bonus. Wir müssen die Gesamtvergütung berechnen.
Spaltenname
emp_id Gehaltsbonusschlüsseltyp
pk nulls/unique nn,u nnfk Tabellendatentyp Zahl Zahl Zahl Länge 11.2 11.2
Anstatt einfach Gehalt und Bonus zu addieren, ist das Ergebnis null, wenn eine bestimmte Zeile einen Nullwert hat, wie im folgenden Beispiel:
empset Gehalt=(Gehalt+Bonus)*1.1 aktualisieren
In dieser Abrechnung werden das Gehalt und der Bonus des Mitarbeiters auf einen neuen Wert aktualisiert, wenn es jedoch keinen Bonus gibt,
Das heißt, Gehalt + Null, dann wird eine falsche Schlussfolgerung gezogen. Zu diesem Zeitpunkt muss die Funktion nvl verwendet werden, um den Einfluss von Nullwerten zu beseitigen.
Die richtige Aussage lautet also:
empset Salary=(salary+nvl(bonus,0)*1.1 aktualisieren
Einzeilige String-Funktionen werden zum Bearbeiten von String-Daten verwendet. Die meisten von ihnen verfügen über einen oder mehrere Parameter und die meisten von ihnen geben Strings zurück.
ASCII()
c1 ist eine Zeichenfolge, gibt den ASCII-Code des ersten Buchstabens von c1 zurück und seine Umkehrfunktion ist CHR()
SELECT ASCII('A') BIG_A,ASCII('z') BIG_z
VON empBIG_A BIG_z65 122
CHR(<i>)[NCHAR_CS]
i ist eine Zahl und die Funktion gibt die Dezimaldarstellung des Zeichens zurück
Wählen Sie CHR(65),CHR(122),CHR(223)
VON empCHR65 CHR122 CHR223A z B
CONCAT(,)
Sowohl c1 als auch c2 sind Zeichenfolgen. Die Funktion verbindet c2 mit der Rückseite von c1. Wenn c2 null ist, wird c1 zurückgegeben.
Wenn sowohl c1 als auch c2 null sind, wird null zurückgegeben. Es gibt das gleiche Ergebnis zurück wie der Operator ||
Wählen Sie den Benutzernamen concat('slobo ','Svoboda') aus
von dualusernameslobo Syoboda
INITCAP()
c1 ist eine Zeichenfolge. Die Funktion gibt den ersten Buchstaben jedes Wortes in Großbuchstaben und die anderen Buchstaben in Kleinbuchstaben zurück. Wörter bestehen aus Leerzeichen, Steuerzeichen,
Einschränkungen bei der Zeichensetzung.
select INITCAP('veni,vedi,vici') Ceasar
von dualCeasarVeni,Vedi,Vici
INSTR(,[,<i>[,]])
c1 und c2 sind beide Zeichenfolgen, i und j sind ganze Zahlen. Die Funktion gibt die Position des j-ten Vorkommens von c2 in c1 zurück und die Suche beginnt beim i-ten Zeichen von c1.
Wenn das erforderliche Zeichen nicht gefunden wird, wird 0 zurückgegeben. Wenn i eine negative Zahl ist, wird die Suche von rechts nach links durchgeführt, die Position wird jedoch weiterhin von links nach rechts berechnet.
Der Standardwert für i und j ist 1.
SELECT INSTR('Mississippi','i',3,3)
FROM dual INSTR('MISSISSIPPI','I',3,3)
11
select INSTR('Mississippi','i',-2,3)
von dual INSTR('MISSISSIPPI','I',3,3)
2
INSTRB(,[,i[,j])
Das Gleiche wie die Funktion INSTR(), außer dass sie Bytes zurückgibt. Für Einzelbytes ist INSTRB() gleich INSTR().
LÄNGE()
c1 ist eine Zeichenfolge und die Länge von c1 wird zurückgegeben. Wenn c1 null ist, wird ein Nullwert zurückgegeben.
select LENGTH('Ipso Facto') ergo
von dualergo10
LÄNGEb()
Gibt wie LENGTH() Bytes zurück.
untere()
Gibt den Kleinbuchstaben von c zurück, der häufig in der Teilzeichenfolge „where“ vorkommt.
Wählen Sie LOWER(Farbname)
aus Artikeldetail
WHERE LOWER(colorname) LIKE '%white%'COLORNAMEWinterwhite
LPAD(,<i>[,])
c1 und c2 sind beide Zeichenfolgen und i ist eine Ganzzahl. Verwenden Sie die Zeichenfolge c2, um die Länge i auf der linken Seite von c1 zu ergänzen, die mehrmals wiederholt werden kann. Wenn i kleiner als die Länge von c1 ist,
Dann werden nur c1-Zeichen zurückgegeben, solange i, und die anderen werden abgeschnitten. Der Standardwert von c2 ist ein einzelnes Leerzeichen, siehe RPAD.
Wählen Sie LPAD(Antwort,7,'') aufgefüllt,Antwort nicht aufgefüllt
aus der Frage;
GEPOLSTERT UNGEPOLSTERT Ja JaNEIN NEINVielleicht vielleicht
LTRIM(,)
Entfernen Sie das Zeichen ganz links in c1, sodass sich das erste Zeichen nicht in c2 befindet. Wenn c2 nicht vorhanden ist, ändert sich c1 nicht.
Wählen Sie LTRIM('Mississippi','Mis') aus dualLTRppi aus
RPAD(,<i>[,])
Verwenden Sie die Zeichenfolge c2, um die Länge i auf der rechten Seite von c1 zu ergänzen, die mehrmals wiederholt werden kann. Wenn i kleiner als die Länge von c1 ist, werden nur c1-Zeichen zurückgegeben, die so lang sind wie i.
Andere werden abgeschnitten. Der Standardwert von c2 ist ein einzelnes Leerzeichen, die anderen ähneln LPAD.
RTRIM(,)
Entfernen Sie das Zeichen ganz rechts in c1, sodass sich das letzte Zeichen nicht in c2 befindet. Wenn c2 nicht vorhanden ist, ändert sich c1 nicht.
ERSETZEN(,[,])
c1, c2 und c3 sind alles Zeichenfolgen. Die Funktion ersetzt c2, das in c1 erscheint, durch c3 und gibt zurück.
Wählen Sie REPLACE('uptown','up','down')
von dualREPLACEdowntown
STBSTR(,<i>[,])
c1 ist eine Zeichenfolge, i und j sind ganze Zahlen, und eine Teilzeichenfolge der Länge j wird beginnend an der i-ten Position von c1 oder bis zum Ende der Zeichenfolge zurückgegeben, wenn j leer ist.
select SUBSTR('Message',1,4)
von dualSUBSMess
SUBSTRB(,<i>[,])
Es ist ungefähr dasselbe wie SUBSTR, außer dass I und J in Bytes berechnet werden.
SOUNDEX()
Gibt Wörter zurück, die ähnlich wie c1 klingen
select SOUNDEX('dawes') Dawes SOUNDEX('daws') Daws, SOUNDEX('dawson')
von DualDawes Daws DawsonD200 D200 D250
ÜBERSETZEN(,,)
Ersetzen Sie in c1 dieselben Zeichen wie in c2 durch c3
Wählen Sie den TRANSLATE('fumble','uf','ar')-Test aus dualTEXTramble aus
TRIM([[]] von c3)
Löschen Sie den ersten, letzten oder beide in der c3-Zeichenfolge.
Wählen Sie TRIM('space gepolstert') Trim aus Dual TRIMspace gepolstert
OBERE()
Gibt die Großbuchstabenversion von c1 zurück, die häufig in der Teilzeichenfolge „where“ vorkommt.
Wählen Sie den Namen aus Dual aus, wobei UPPER(name) LIKE 'KI%'NAMEKING ist
Einzeilige numerische Funktionen Einzeilige numerische Funktionen verarbeiten numerische Daten und führen mathematische und arithmetische Operationen aus. Alle Funktionen akzeptieren numerische Parameter und geben numerische Werte zurück.
Die Operanden und Werte aller trigonometrischen Funktionen sind Bogenmaße und nicht Winkel. Oracle bietet keine integrierte Konvertierungsfunktion für Bogenmaße und Winkel.
ABS()
Gibt den absoluten Wert von n zurück
ACOS()
Die inverse Cofaktorfunktion gibt eine Zahl zwischen -1 und 1 zurück. n steht für Bogenmaß
Wählen Sie ACOS(-1) pi,ACOS(1) NULL
VON dualPI NULL3.14159265 0
ASIN()
Wie auch immer, die mysteriöse Funktion gibt -1 bis 1 zurück, n steht für das Bogenmaß
ATAN()
Die Arcustangens-Funktion gibt den Arcustangens-Wert von n zurück, wobei n das Bogenmaß darstellt.
Decke()
Gibt die kleinste Ganzzahl zurück, die größer oder gleich n ist.
COS()
Gibt den Co-Wert von n zurück, wobei n das Bogenmaß ist
COSH()
Gibt den hyperbolischen Cofaktor von n zurück, wobei n eine Zahl ist.
Wählen Sie COSH(<1.4>)
VON dualCOSH(1.4)2.15089847
EXP()
Gibt die n-te Potenz von e zurück, e=2,71828183.
BODEN()
Gibt die größte Ganzzahl zurück, die kleiner oder gleich N ist.
LN()
Gibt den natürlichen Logarithmus von N zurück, der größer als 0 sein muss
PROTOKOLL(,)
Gibt den Logarithmus von n1 zur Basis n2 zurück
MOD()
Gibt den Rest von n1 dividiert durch n2 zurück.
LEISTUNG(,)
Gibt n1 hoch n2 zurück
RUNDEN(,)
Gibt den Wert von n1 zurück, gerundet auf n2 Stellen rechts vom Dezimalpunkt. Der Standardwert von n2 ist 0. Diesmal wird die ganze Zahl gerundet, die dem Dezimalpunkt am nächsten liegt.
Wenn n2 eine negative Zahl ist, wird sie auf die entsprechende Ziffer links vom Dezimalpunkt gerundet. n2 muss eine ganze Zahl sein.
Wählen Sie RUND(12345,-2),RUND(12345.54321,2)
VON dualROUND(12345,-2) ROUND(12345.54321,2)12300 12345.54
ZEICHEN()
Wenn n eine negative Zahl ist, wird -1 zurückgegeben, wenn n eine positive Zahl ist, wird 1 zurückgegeben, und wenn n=0, wird 0 zurückgegeben.
SÜNDE()
Gibt den positiven Wert von n zurück, wobei n das Bogenmaß ist.
SINH()
Gibt den hyperbolischen positiven Wert von n zurück, wobei n das Bogenmaß ist.
SQRT()
Gibt die Quadratwurzel von n zurück, wobei n das Bogenmaß ist
BRÄUNEN()
Gibt den Tangens von n zurück, wobei n das Bogenmaß ist
TANH()
Gibt den hyperbolischen Tangens von n zurück, wobei n das Bogenmaß ist
TRUNC(,)
Gibt den Wert von n1 gekürzt auf n2 Dezimalstellen zurück. Die Standardeinstellung von n2 ist 0. Wenn n2 die Standardeinstellung ist, wird n1 auf eine ganze Zahl gekürzt.
Wenn n2 ein negativer Wert ist, wird er an der entsprechenden Position links vom Dezimalpunkt abgeschnitten.
Einzeilige Datumsfunktion
Die einzeilige Datumsfunktion arbeitet mit dem Datentyp DATA und die meisten von ihnen verfügen über Parameter des Datentyps DATA.
Die meisten der zurückgegebenen Werte sind ebenfalls Werte vom Datentyp DATA.
ADD_MONTHS(,<i>)
Gibt das Ergebnis des Datums d plus i Monate zurück. i kann eine beliebige Ganzzahl sein. Wenn i eine Dezimalzahl ist,
Dann wandelt die Datenbank es implizit in eine Ganzzahl um und schneidet den Teil nach dem Dezimalpunkt ab.
LAST_DAY()
Die Funktion gibt den letzten Tag des Monats zurück, der das Datum d enthält
MONTHS_BETWEEN(,)
Gibt die Anzahl der Monate zwischen d1 und d2 zurück, wenn die Daten von d1 und d2 gleich sind oder beide der letzte Tag des Monats sind.
Dann wird eine Ganzzahl zurückgegeben, andernfalls enthält das zurückgegebene Ergebnis einen Bruch.
NEW_TIME(,,)
d1 ist ein Datumsdatentyp. Wenn Datum und Uhrzeit in der Zeitzone tz1 d sind, werden Datum und Uhrzeit in der Zeitzone tz2 zurückgegeben.
tz1 und tz2 sind Zeichenfolgen.
NEXT_DAY(,)
Gibt den ersten Tag nach dem von dow angegebenen Datum d zurück, das den Wochentag in der in der aktuellen Sitzung angegebenen Sprache angibt.
Die zurückgegebene Zeitkomponente ist dieselbe wie die Zeitkomponente von d.
Wählen Sie NEXT_DAY('01-Jan-2000','Monday') "1. Montag",
NEXT_DAY('01-Nov-2004','Tuesday')+7 "2. Dienstag")
von dual;
1. Montag, 2. Dienstag, 3. Januar 2000, 9. November 2004
RUNDEN([,])
Runden Sie das Datum d gemäß dem von fmt angegebenen Format, bei dem es sich um eine Zeichenfolge handelt.
SYADATE
Die Funktion benötigt keine Parameter und gibt das aktuelle Datum und die aktuelle Uhrzeit zurück.
TRUNC([,])
Gibt das Datum d in den durch fmt angegebenen Einheiten zurück.
Einzelzeilen-Konvertierungsfunktion Die Einzelzeilen-Konvertierungsfunktion wird verwendet, um mehrere Datentypen zu verarbeiten und zwischen Datentypen zu konvertieren.
CHARTORWID()
c erstellt einen String und die Funktion konvertiert c in den RWID-Datentyp.
SELECT test_id
von test_case
wobei rowid=CHARTORWID('AAAA0SAACAAAALiAAA')
KONVERTIEREN(,[,])
c-Endzeichenfolge, dset und sset sind zwei Zeichensätze. Die Funktion konvertiert die Zeichenfolge c vom sset-Zeichensatz in den dset-Zeichensatz.
Die Standardeinstellung von sset ist der Zeichensatz der Datenbank.
HEXTORAW()
x ist eine hexadezimale Zeichenfolge und die Funktion konvertiert das hexadezimale x in einen RAW-Datentyp.
RAWTOHEX()
x ist eine Zeichenfolge vom RAW-Datentyp und die Funktion konvertiert den RAW-Datentyp in einen hexadezimalen Datentyp.
ROWIDTOCHAR()
Die Funktion konvertiert den Datentyp ROWID in den Datentyp CHAR.
TO_CHAR([[,)
x ist ein Daten- oder Zahlendatentyp. Die Funktion konvertiert x in einen char-Datentyp im durch fmt angegebenen Format.
Wenn x ein Datum ist, steuert nlsparm= NLS_DATE_LANGUAGE die Sprache, die für den zurückgegebenen Monat und Tag verwendet wird.
Wenn x eine Zahl ist, wird nlsparm=NLS_NUMERIC_CHARACTERS verwendet, um Dezimal- und Tausendertrennzeichen sowie Währungssymbole anzugeben.
NLS_NUMERIC_CHARACTERS="dg", NLS_CURRENCY="string"
MITEINANDER AUSGEHEN([,[,)
c stellt eine Zeichenfolge dar und fmt stellt eine Zeichenfolge in einem speziellen Format dar. Gibt c im FMT-Format zurück und nlsparm gibt die verwendete Sprache an.
Die Funktion konvertiert die Zeichenfolge c in den Datentyp „Datum“.
TO_MULTI_BYTE()
c stellt eine Zeichenfolge dar und die Funktion wandelt das Kürzungszeichen von c in ein Multibyte-Zeichen um.
TO_NUMBER([,[,)
c stellt eine Zeichenfolge dar, fmt stellt eine Zeichenfolge in einem speziellen Format dar und der Rückgabewert der Funktion wird in dem von fmt angegebenen Format angezeigt.
nlsparm stellt die Sprache dar und die Funktion gibt die durch c dargestellte Zahl zurück.
TO_SINGLE_BYTE()
Konvertieren Sie Multibyte-Zeichen in Zeichenfolge c in entsprechende Einzelbyte-Zeichen.
Diese Funktion wird nur verwendet, wenn der Datenbankzeichensatz sowohl Einzelbyte- als auch Mehrbyte-Zeichen enthält
Andere einzeilige Funktionen
BFILENAME(,)
dir ist ein Objekt vom Typ Verzeichnis und file ist ein Dateiname. Die Funktion gibt einen leeren BFILE-Positionswertindikator zurück.
Die Funktion wird zum Initialisieren von BFILE-Variablen oder BFILE-Spalten verwendet.
DEKODIEREN(,,[,,,[])
x ist ein Ausdruck, m1 ist ein passender Ausdruck, x wird mit m1 verglichen, wenn m1 gleich x ist, dann wird r1 zurückgegeben, andernfalls wird x mit m2 verglichen,
Und so weiter m3, m4, m5 ... bis das Ergebnis zurückgegeben wird.
ENTSORGEN(,[,[,[,]]])
x ist ein Ausdruck oder ein Zeichen und fmt steht für Oktal, Dezimal, Hexadezimal oder ein einzelnes Zeichen.
Die Funktion gibt einen Wert vom Typ VARCHAR2 zurück, der Informationen über die interne Darstellung von x enthält.
Wenn n1,n2 angegeben sind, werden Bytes der Länge n2 beginnend mit n1 zurückgegeben.
EMPTY_BLOB()
Diese Funktion hat keine Parameter und gibt einen leeren BLOB-Positionsindikator zurück. Funktion zum Initialisieren einer BLOB-Variablen oder BLOB-Spalte.
EMPTY_CLOB()
Diese Funktion hat keine Parameter und gibt einen leeren CLOB-Positionsindikator zurück. Die Funktion wird zum Initialisieren einer CLOB-Variablen oder CLOB-Spalte verwendet.
GRÖSSTE()
exp_list ist eine Liste von Ausdrücken, die den größten Ausdruck zurückgibt. Jeder Ausdruck wird implizit in den Datentyp des ersten Ausdrucks konvertiert.
Wenn der erste Ausdruck einem der String-Datentypen angehört, ist das zurückgegebene Ergebnis vom Datentyp varchar2.
Der gleichzeitig verwendete Vergleich ist ein Vergleich ohne Leerzeichen.
AM WENIGSTEN()
exp_list ist eine Liste von Ausdrücken, die den kleinsten Ausdruck unter ihnen zurückgibt. Jeder Ausdruck wird implizit in den Datentyp des ersten Ausdrucks konvertiert.
Wenn der erste Ausdruck einem der String-Datentypen angehört, ist das zurückgegebene Ergebnis vom Datentyp varchar2.
Der gleichzeitig verwendete Vergleich ist ein Vergleich ohne Leerzeichen.
UID
Diese Funktion hat keine Parameter und gibt eine Ganzzahl zurück, die den aktuellen Datenbankbenutzer eindeutig identifiziert.
BENUTZER
Gibt den Benutzernamen des aktuellen Benutzers zurück
USERENV()
Basierend auf der Opt-Rückgabe enthält die Rückgabe aktuelle Sitzungsinformationen. Optionale Werte für opt sind:
Die SYSDBA-Rolle antwortet in der ISDBA-Sitzung und gibt TRUE zurück.
SESSIONID gibt die Prüfsitzungskennung zurück
ENTRYID gibt verfügbare Prüfeintrags-IDs zurück
INSTANCE Gibt die Instanz-ID zurück, nachdem die Sitzung verbunden wurde.
Dieser Wert wird nur verwendet, wenn Sie einen Parallelserver ausführen und über mehrere Instanzen verfügen.
LANGUAGE gibt den Zeichensatz der Sprach-, Regions- und Datenbankeinstellungen zurück.
LANG gibt die ISO-Abkürzung des Sprachnamens zurück.
TERMINAL Gibt die Betriebssystemkennung für das Terminal oder den Computer zurück, das von der aktuellen Sitzung verwendet wird.
VSIZE()
x ist ein Ausdruck. Gibt die Anzahl der Bytes zurück, die intern durch x dargestellt werden.
Gruppenfunktionen werden in SQL auch als Aggregatfunktionen bezeichnet. Sie geben ein einzelnes Ergebnis basierend auf mehreren Zeilen zurück. Die genaue Anzahl der Zeilen kann nicht ermittelt werden.
Es sei denn, die Abfrage wird ausgeführt und alle Ergebnisse sind enthalten. Im Gegensatz zu einzeiligen Funktionen sind zum Zeitpunkt der Analyse alle Zeilen bekannt.
Aufgrund dieses Unterschieds haben Gruppenfunktionen etwas andere Anforderungen und Verhalten als Einzelzeilenfunktionen.
Gruppenfunktionen (mehrzeilige) Im Vergleich zu einzeiligen Funktionen bietet Oracle einen umfangreichen Satz gruppenbasierter, mehrzeiliger Funktionen.
Diese Funktionen können in „select“ oder der „haveing“-Klausel von „select“ verwendet werden und werden häufig mit GROUP BY verwendet, wenn sie zum Auswählen von Teilzeichenfolgen verwendet werden.
AVG([{DISYINCT|ALL}])
Gibt den Durchschnitt numerischer Werte zurück. Die Standardeinstellung ist ALLE.
SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal)
VON scott.empAVG(SAL) AVG(ALLE SAL) AVG(VERSCHIEDENE SAL)1877,94118 1877,94118 1916,071413
COUNT({*|DISTINCT|ALL} )
Gibt die Anzahl der Zeilen in der Abfrage zurück. Die Standardeinstellung ist ALLE. * bedeutet, dass alle Zeilen zurückgegeben werden.
MAX([{DISTINCT|ALL}])
Gibt den Maximalwert des Auswahllistenelements zurück. Wenn x ein String-Datentyp ist, wird ein VARCHAR2-Datentyp zurückgegeben.
Wenn X ein DATA-Datentyp ist, wird ein Datum zurückgegeben. Wenn X ein numerischer Datentyp ist, wird eine Zahl zurückgegeben.
Beachten Sie, dass „distinct“ und „all“ keine Auswirkung haben. Der Maximalwert sollte für beide Einstellungen gleich sein.
MIN([{DISTINCT|ALL}])
Gibt den Mindestwert eines Auswahllistenelements zurück.
STDDEV([{DISTINCT|ALL}])
Gibt die Standardabweichung der Listenelemente des Selektors zurück, wobei die Standardabweichung die Quadratwurzel der Varianz ist.
SUM([{DISTINCT|ALL}])
Gibt die Summe der numerischen Werte der ausgewählten Listenelemente zurück.
VARIANCE([{DISTINCT|ALL}])
Gibt die statistische Varianz eines ausgewählten Listenelements zurück.
Verwenden Sie GROUP BY, um Daten zu gruppieren. Wie der Titel schon sagt, arbeitet die Gruppenfunktion mit gruppierten Daten.
Wir teilen der Datenbank mit, wie sie Daten mit GROUP BY gruppieren oder klassifizieren soll. Wenn wir die Gruppenfunktion in der SELECT-Klausel der SELECT-Anweisung verwenden,
Wir müssen gruppierte oder nicht konstante Spalten in die GROUP BY-Klausel einfügen. Wenn „group by“ nicht für eine spezielle Verarbeitung verwendet wird,
Dann besteht die Standardklassifizierung darin, das gesamte Ergebnis einer Kategorie zuzuordnen.
Wählen Sie stat,counter(*) zip_count
from zip_codes GROUP BY state;
ST ZIP_COUNT----------AK 360AL 1212AR 1309AZ 768CA 3982
In diesem Beispiel verwenden wir das Statusfeld zum Klassifizieren. Wenn wir die Ergebnisse nach Postleitzahlen sortieren möchten, können wir die ORDER BY-Anweisung verwenden.
Die ORDER BY-Klausel kann Spalten- oder Gruppenfunktionen verwenden.
Wählen Sie stat,counter(*) zip_count
von Postleitzahlen
GROUP BY-Status ORDER BY COUNT(*) DESC;
ST COUNT(*)----------NY 4312PA 4297TX 4123CA 3982
Begrenzen Sie gruppierte Daten mit der HAVING-Klausel
Nachdem Sie nun wissen, wie Sie die Hauptfunktion in der SELECT-Anweisung und der ORDER BY-Klausel einer Abfrage verwenden, kann die Gruppenfunktion nur für zwei Teilzeichenfolgen verwendet werden.
Gruppenfunktionen können nicht in WHERE-Teilzeichenfolgen verwendet werden. Beispielsweise ist die folgende Abfrage falsch:
Fehler
SELECT sales_clerk,SUN(sale_amount)
VON gross_sales
WHERE sales_dept='OUTSIDE' AND SUM(sale_amount)>10000
GRUPPE NACH sales_clerk
In dieser Anweisung weiß die Datenbank nicht, was SUM() ist. Wenn wir die Datenbank anweisen müssen, Zeilen zu gruppieren und dann die Ausgabe der gruppierten Zeilen zu begrenzen,
Der richtige Weg ist die Verwendung der HAVING-Anweisung:
SELECT sales_clerk,SUN(sale_amount)
VON gross_sales
WHERE sales_dept='OUTSIDE'
GRUPPE NACH sales_clerk
HAVING SUM(sale_amount)>10000;
Verschachtelte Funktionen Funktionen können verschachtelt werden. Die Ausgabe einer Funktion kann die Eingabe einer anderen Funktion sein. Die Operanden haben einen vererbbaren Ausführungsprozess.
Die Priorität von Funktionen basiert jedoch nur auf der Position, und Funktionen folgen dem Prinzip von innen nach außen und von links nach rechts.
Die Verschachtelungstechnologie wird im Allgemeinen für Funktionen wie DECODE verwendet, die in logischen Beurteilungsanweisungen IF...THEN...ELSE verwendet werden können.