Som en del av att lära sig Oracle SQL-självstudier, här är bra detaljer om gruppen för oracle
Gruppfunktioner till skillnad från funktioner med enstaka värden fungerar på uppsättningen rader och returnerar en rad per grupp. Uppsättningen rader kan vara en hel tabell eller tabellen uppdelad i grupper
Typer av gruppfunktioner i Oracle inkluderar:
AVG([Distinct/alla] n) | Endast numeriska datatyper. Medelvärdet för kolumnen n ignorerar nullvärden |
COUNT({*/[Distinct/all]expr}) | Det är bara en gruppfunktion som innehåller nollvärden. Den räknar antalet rader i select-satsen som uppfyller where-satsen. Count(*) inkluderar alla null- och dubblettvärden |
MAX([Distinct/alla] expr) | Den kan användas med vilken datatyp som helst. Det ger det maximala värdet av expr som ignorerar nullvärden |
MIN([Distinct/alla] expr) | Den kan användas med vilken datatyp som helst. . Det ger ett lägsta värde på expr som ignorerar nullvärden |
STDDEV([Distinkt/alla] n) | Endast numeriska datatyper. Det ger en standardavvikelse på n och ignorerar nullvärden |
SUMMA ([Distinkt/alla] n) | Endast numeriska datatyper och kan inte ha andra aritmetiska operatorer i function.it ger summan av n ignorerar nollvärden |
VARIANS([Distinkt/alla] n) | Endast numeriska datatyper. Det ger varians av n ignorerar nullvärden |
Syntax:
SELECT col1, col2, … col_n, aggregate_function (aggregate_expression) FROM tables [WHERE conditions] GROUP BY col1, col2, … col_n Having group condition;
Oracle-servern utförde följande steg
- Först väljs raderna baserat på where-satsen
- Rader är grupperade
- Gruppfunktionen tillämpas på varje grupp
- Gruppen som matchar kriteriet i having-satsen visas
Så WHERE-satsen utvärderas först (begränsar frågeresultaten), sedan GROUP BY-satsen (grupperar resultaten av WHERE), sedan HAVING-satsen (begränsar resultaten ytterligare genom att begränsa de grupper som returneras).
Några viktiga punkter om grupper efter orakel
(1) GROUP BY:Bryter ner resultaten av gruppfunktioner från en stor datatabell till mindre logiska grupperingar.
(2) WHERE-satsen kan inte begränsa en grupp, så använd HAVING-satsen.
(3) Använd inte kolumnaliaset i GROUP BY-satsen.
(4) HAR:begränsar visningen av grupper till de som "har" de angivna villkoren.
(5) NVL-funktionen tillåter en GROUP BY-funktion att inkludera nollvärden i sin beräkning.
(6) Alla kolumner eller uttryck i urvalslistan som inte är en aggregerad funktion måste finnas i group by-satsen
Exempel på gruppfunktioner i Oracle
Låt oss först skapa exempeltabellerna och sedan prova gruppen med 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;
Enkel kolumn
Select dept , avg(sal) from emp group by dept;
Flera kolumner
Select deptno ,job, sum(sal) from emp group by deptno,job
Räknefunktion
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;
Hoppas du gillar den här artikeln
Relaterade artiklar
Analytiska funktioner i Oracle :Oracle Analytiska funktioner beräknar ett aggregerat värde baserat på grupp av rader genom att använda överpartition efter oracle-sats , de skiljer sig från aggregerade funktioner
rankas i Oracle:RANK, DENSE_RANK och ROW_NUMBER är orakelanalytiska funktion som används för att rangordna rader i gruppen av rader som kallas fönster
Lead-funktion i Oracle :Kolla in LAG-funktionen i Oracle &Lead-funktion i Oracle, hur man använder dem i analytiska frågor och hur det fungerar i Oracle sql
Top-N-frågor i Oracle:Kolla in den här sidan om att utforska de olika sätten att uppnå Top-N-frågor i Oracle och paginering i Oracle-frågeoracle-databasen.