Като част от урока за изучаване на Oracle SQL, ето добри подробности за групата от оракул
Груповите функции за разлика от функциите с една стойност работят върху набор от редове и връщат един ред на група. Наборът от редове може да бъде цяла таблица или таблицата, разделена на групи
Типове групови функции в Oracle включват:
AVG([Distinct/all] n) | Само числови типове данни. Средната стойност на колона n без отчитане на нулеви стойности |
COUNT({*/[Distinct/all]expr}) | Това е само групова функция, която включва нулеви стойности. Той отчита броя на редовете в оператора select, който отговаря на клаузата where. Count(*) включва всички нулеви и дублиращи се стойности |
MAX([Distinct/all] expr) | Може да се използва с всеки тип данни. Той дава максималната стойност на expr игнорирайки нулеви стойности |
MIN([Distinct/all] expr) | Може да се използва с всеки тип данни. . Той дава минимална стойност на expr игнорирайки нулеви стойности |
STDDEV([Distinct/all] n) | Само числови типове данни. Той дава стандартно отклонение от n игнорира нулеви стойности |
SUM ([Distinct/all] n) | Само числови типове данни и не може да има други аритметични оператори във функцията. Тя предоставя сумата от n игнориране на нулеви стойности |
VARIANCE([Distinct/all] n) | Само числови типове данни. Той дава дисперсия на n игнорира нулеви стойности |
Синтаксис:
SELECT col1, col2, … col_n, aggregate_function (aggregate_expression) FROM tables [WHERE conditions] GROUP BY col1, col2, … col_n Having group condition;
Сървърът на Oracle изпълни следните стъпки
- Първо се избират редовете въз основа на клаузата where
- Редовете са групирани
- Груповата функция се прилага към всяка група
- Показва се групата, която отговаря на критерия в клаузата с
Така че клаузата WHERE се оценява първо (ограничава резултатите от заявката), след това клаузата GROUP BY (групира резултатите от WHERE), след това клаузата HAVING (по-нататък ограничава резултатите, като ограничава върнатите групи).
Някои важни точки за групата по оракул
(1) GROUP BY:Разбива резултатите от груповите функции от една голяма таблица с данни на по-малки логически групи.
(2) Клаузата WHERE не може да ограничи група, така че използвайте клаузата HAVING.
(3) Не използвайте псевдонима на колоната в клаузата GROUP BY.
(4) HAVING:ограничава показването на групи до тези, които „имат“ определените условия.
(5) Функцията NVL позволява на функция GROUP BY да включва нулеви стойности в своето изчисление.
(6) Всяка колона или израз в списъка за избор, който не е агрегатна функция, трябва да бъде в групата по клауза
Примери за групови функции в Oracle
Нека първо създадем примерните таблици и след това да опитаме групата от 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;
Една колона
Select dept , avg(sal) from emp group by dept;
Множество колони
Select deptno ,job, sum(sal) from emp group by deptno,job
Функция за броене
SELECT dept, COUNT(*) AS "Np of employees" FROM emp WHERE sal < 15000
GROUP BY dept;
Минимална функция
SELECT dept, MIN(sal) AS "Lowest salary" FROM emp
GROUP BY dept;
Надяваме се тази статия да ви хареса
Сродни статии
Аналитични функции в oracle :Oracle Analytic функции изчисляват обобщена стойност въз основа на група от редове чрез използване на over partition by oracle клауза, те се различават от агрегатните функции
rank в oracle:RANK, DENSE_RANK и ROW_NUMBER са аналитични за оракул функция, която се използва за класиране на редове в групата от редове, наречена window
Lead функция в oracle :Вижте LAG функция в Oracle &Lead функция в Oracle, как да ги използвате в аналитични заявки и как работи в Oracle sql
Top-N заявки в Oracle :Разгледайте тази страница за проучване на различните начини за постигане на Top-N заявки в Oracle и разделяне на страници в oracle query oracle база данни.