Oracle
 sql >> база данни >  >> RDS >> Oracle

Агрегиране на данни с помощта на групови функции (група по оракул)

Като част от урока за изучаване на 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 база данни.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете VARRAY като обект на база данни в базата данни на Oracle

  2. Има ли начин да инсталирам java на Oracle 11g XE?

  3. Тип данни на Oracle JDBC и Oracle CHAR

  4. Пример за групово събиране на Oracle с помощта на обект тип тип ред на курсора

  5. Използване на Dapper със съхранени процедури на Oracle, които връщат курсори