Som en del af at lære Oracle SQL-selvstudiet, her er gode detaljer om gruppen efter oracle
Gruppefunktioner i modsætning til enkeltværdifunktioner fungerer på sæt af rækker og returnerer en række pr. gruppe. Sættet af rækker kan være en hel tabel eller tabellen opdelt i grupper
Typer af gruppefunktioner i Oracle omfatter:
AVG([Distinct/alle] n) | Kun numeriske datatyper. Den gennemsnitlige værdi af kolonnen n ignorerer null-værdier |
COUNT({*/[Distinct/all]expr}) | Det er kun en gruppefunktion, der inkluderer nulværdier. Det tæller antallet af rækker i select-sætningen, som opfylder where-sætningen. Count(*) inkluderer alle nul- og duplikerede værdier |
MAX([Distinct/alle] udtr.) | Det kan bruges med enhver datatype. Det giver den maksimale værdi af expr, der ignorerer null-værdier |
MIN([Distinct/alle] udtr.) | Det kan bruges med enhver datatype. . Det giver en minimumsværdi på expr, der ignorerer null-værdier |
STDDEV([Distinct/alle] n) | Kun numeriske datatyper. Det giver en standardafvigelse på n ignorerer null-værdier |
SUM ([Distinct/alle] n) | Kun numeriske datatyper og kan ikke have andre aritmetiske operatorer i funktionen.it giver summen af n ignorerer null-værdier |
VARIANCE([Distinct/alle] n) | Kun numeriske datatyper. Det giver varians af n ignorerer null-værdier |
Syntaks:
SELECT col1, col2, … col_n, aggregate_function (aggregate_expression) FROM tables [WHERE conditions] GROUP BY col1, col2, … col_n Having group condition;
Oracle-serveren udførte følgende trin
- Først vælges rækkerne baseret på where-sætning
- Rækker er grupperet
- Gruppefunktionen anvendes på hver gruppe
- Den gruppe, der matcher kriteriet i have-sætningen, vises
Så WHERE-udtrykket evalueres først (begrænser forespørgselsresultaterne), derefter GROUP BY-udtrykket (grupperer resultaterne af WHERE), derefter HAVING-udtrykket (begrænser resultaterne yderligere ved at begrænse de returnerede grupper).
Nogle vigtige punkter om grupper efter orakel
(1) GROUP BY:Opdeler resultaterne af gruppefunktioner fra en stor tabel med data til mindre logiske grupperinger.
(2) WHERE-sætningen kan ikke begrænse en gruppe, så brug HAVING-sætningen.
(3) Brug ikke kolonnealiaset i GROUP BY-sætningen.
(4) HAVING:begrænser visningen af grupper til dem, der "har" de specificerede betingelser.
(5) NVL-funktionen tillader en GROUP BY-funktion at inkludere nulværdier i dens beregning.
(6) Enhver kolonne eller ethvert udtryk i udvælgelseslisten, der ikke er en aggregeret funktion, skal være i gruppe efter klausulen
Eksempler på gruppefunktioner i Oracle
Lad os først oprette eksempeltabellerne og derefter prøve gruppen af oracle sql
CREATE TABLE "DEPT" ( "DEPTNO" NUMBER(2,0), "DNAME" VARCHAR2(14), "LOC" VARCHAR2(13), CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO") ) CREATE TABLE "EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFERENCES "DEPT" ("DEPTNO") ENABLE ); insert into DEPT values(10, 'ACCOUNTING', 'NEW YORK'); insert into dept values(20, 'RESEARCH', 'DALLAS'); insert into dept values(30, 'RESEARCH', 'DELHI'); insert into dept values(40, 'RESEARCH', 'MUMBAI'); insert into emp values( 7698, 'Blake', 'MANAGER', 7839, to_date('1-5-2007','dd-mm-yyyy'), 2850, null, 10 ); insert into emp values( 7782, 'Clark', 'MANAGER', 7839, to_date('9-6-2008','dd-mm-yyyy'), 2450, null, 10 ); insert into emp values( 7788, 'Scott', 'ANALYST', 7566, to_date('9-6-2012','dd-mm-yyyy'), 3000, null, 20 ); insert into emp values( 7789, 'TPM', 'ANALYST', 7566, to_date('9-6-2017','dd-mm-yyyy'), 3000, null, null ); insert into emp values( 7560, 'T1OM', 'ANALYST', 7567, to_date('9-7-2017','dd-mm-yyyy'), 4000, null, 20 ); insert into emp values( 7790, 'TOM', 'ANALYST', 7567, to_date('9-7-2017','dd-mm-yyyy'), 4000, null, null ); commit; Select * from emp;
Enkelt kolonne
Select dept , avg(sal) from emp group by dept;
Flere kolonner
Select deptno ,job, sum(sal) from emp group by deptno,job
Tællefunktion
SELECT dept, COUNT(*) AS "Np of employees" FROM emp WHERE sal < 15000
GROUP BY dept;
Min funktion
SELECT dept, MIN(sal) AS "Lowest salary" FROM emp
GROUP BY dept;
Håber du kan lide denne artikel
Relaterede artikler
Analytiske funktioner i Oracle:Oracle-analytiske funktioner beregner en aggregeret værdi baseret på gruppe af rækker ved at bruge overpartition efter oracle-klausul, de adskiller sig fra aggregerede funktioner
rang i oracle:RANK, DENSE_RANK og ROW_NUMBER er oracle analytiske funktion som bruges til at rangordne rækker i gruppen af rækker kaldet vindue
Lead-funktion i Oracle :Tjek LAG-funktionen i Oracle &Lead-funktion i Oracle, hvordan man bruger dem i analytiske forespørgsler, og hvordan det fungerer i Oracle sql
Top-N-forespørgsler i Oracle:Tjek denne side ud for at udforske de forskellige måder at opnå Top-N-forespørgsler i Oracle og sideinddeling i Oracle-forespørgsels-oracle-databasen.