sql >> Database teknologi >  >> RDS >> Oracle

Aggregering af data ved hjælp af gruppefunktioner (grupper efter orakel)

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.


  1. ST_DWithin tager parameter som grad, ikke meter, hvorfor?

  2. Hvordan kan jeg importere en stor (14 GB) MySQL-dumpfil til en ny MySQL-database?

  3. Hvordan får man den første og sidste dato for indeværende år?

  4. Hvordan LocalTimeStamp() virker i PostgreSQL