sql >> Databáze >  >> RDS >> Oracle

Oracle Partition By Keyword

PARTITION BY klauzule nastavuje rozsah záznamů, které budou použity pro každou "GROUP" v rámci OVER doložka.

Ve vašem příkladu SQL DEPT_COUNT vrátí počet zaměstnanců v daném oddělení pro každý záznam zaměstnance. (Je to, jako byste denomalizovali emp stůl; stále vracíte každý záznam v emp tabulka.)

emp_no  dept_no  DEPT_COUNT
1       10       3
2       10       3
3       10       3 <- three because there are three "dept_no = 10" records
4       20       2
5       20       2 <- two because there are two "dept_no = 20" records

Pokud tam byl další sloupec (např. state ), pak byste mohli spočítat, kolik oddělení v tomto státě.

Je to jako získat výsledky GROUP BY (SUM , AVG , atd.) bez agregace sady výsledků (tj. odstranění odpovídajících záznamů).

Je to užitečné, když používáte LAST OVER nebo MIN OVER funkcí získat například nejnižší a nejvyšší plat v oddělení a ten pak použít při výpočtu proti této evidenci plat bez dílčí výběr, který je mnohem rychlejší.

Další podrobnosti najdete v odkazovaném článku AskTom.



  1. Vyberte poslední řádek v MySQL

  2. Jak nainstalovat a zabezpečit MariaDB na Debian 9

  3. Jak funguje include() v PL-SQL?

  4. PostgreSQL -musí se objevit v klauzuli GROUP BY nebo být použit v agregační funkci