Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Partycja Oracle według słowa kluczowego

PARTITION BY klauzula określa zakres rekordów, które będą używane dla każdej „GRUPY” w OVER klauzula.

W twoim przykładzie SQL DEPT_COUNT zwróci liczbę pracowników w tym dziale dla każdego rekordu pracownika. (To tak, jakbyś odnomalizował emp stół; nadal zwracasz każdy rekord w emp tabela.)

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

Jeśli była inna kolumna (np. state ) możesz policzyć, ile departamentów w tym stanie.

To tak, jakby uzyskać wyniki GROUP BY (SUM , AVG , itp.) bez agregowania zestawu wyników (tj. usuwania pasujących rekordów).

Jest to przydatne, gdy używasz LAST OVER lub MIN OVER funkcje, aby uzyskać na przykład najniższą i najwyższą pensję w dziale, a następnie użyć jej w obliczeniach względem tego rekordu wynagrodzenia bez wybór podrzędny, który jest znacznie szybszy.

Przeczytaj powiązany artykuł AskTom, aby uzyskać więcej informacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Porównanie dostawców zgodnych z Entity Framework dla Oracle?

  2. Dodaj znak waluty £, $ do niektórych pól ORACLE

  3. Jak wywołać procedurę składowaną Oracle w Pythonie?

  4. Jak używać ora_hash w kolumnie typu danych xmltype

  5. Oracle:Importuj plik CSV