oracle

LIST_AGG - Agregacja danych w jednym wierszu

select
kol1,
listagg(kol2, ' ') within group (order by kol2) lista
from tab
group by kol1

Tags: 

Funkcje okienkowe LAG, LEAD

LAG - Poruszanie się po wcześniejszych wierszach

select
kol1,
kol2,
kol3,
LAG(kol1 || ' ' || kol2, 1, '----') OVER (order by kol3) wczesniej,
LEAD(kol1 || ' ' || kol2, 1, '----') OVER (order by kol3) pozniej
from tab

LEAD - Poruszanie się po późniejszych wierszach

Tags: 

INVISIBLE, VISIBLE - Ukrywanie i odkrywanie kolumn

INVISIBLE - Ukrywa kolumny, nie pozwala na ich aktualizację

alter table tab modify (kol1 invisible, kol2 invisible);

VISIBLE - Odkrywa kolumny

alter table tab modify (kol1 visible, kol2 visible);

Operacje te mogą służyć do dodawania nowych kolumn w środku tabeli.

Tags: 

FETCH - Wypisywanie pierwszych wierszy zestawu danych

Wypisanie pierwszych 10 wierszy

select *
from tab
fetch first 10 rows only

Wypisanie 20 procent pierwszych wierszy

select *
from tab
fetch first 20 percent rows only

Wypisanie pierwszych 10 wierszy z pominięciem pierwszego wiersza

Tags: 

NTILE, WIDTH_BUCKET - Podział zestawów danych

NTILE - Dzieli zestaw danych na równe części

select
kol1,
kol2,
kol3,
ntile(3) over (order by kol3 desc) nt
from tab

WIDTH BUCKET - Dzieli zestaw danych na części w zależności od ustalonych wartości granicznych.

Tags: 

ROW_NUMBER - Pozycja wiersza

ROW_NUMBER - Pozycja wiersza, działa także w wersji z partycjami

select
kol1,
kol2,
kol3,
kol4,
row_number() over (order by kol4 desc) row_numb,
row_number() over (partition by kol3 order by kol4 desc) row_numb_part
from tab1

Tags: 

CUME_DIST, PERCENT_RANK - Rozkłady wartości

CUME_DIST - Oblicza skumulowany rozkład wartości w grupie wartości. Dla danego wiersza CUME_DIST jest liczbą wierszy o wartości mniejszej lub równej wartości wiersza.
PERCENT_RANK - Oblicza względną rangę wiersza w grupie wierszy. Funkcja jest podobna do CUME_DIST, z tym, że nie uwzględnia bieżacego wiersza.

Tags: 

MERGE - Aktualizacja danych o pod okreslonymi warunkami

Przykład:

MERGE INTO bonuses b
USING (select employee_id, department_id, salary from employees where department_id in (20, 40)) t2
ON (b.employee_id = t2.employee_id)
WHEN
MATCHED THEN UPDATE set b.bonus = b.bonus * 1.1
WHEN NOT MATCHED THEN INSERT (b.employee_id, b.department_id, b.salary)
values (t2.employee_id, t2.department_id, t2.salary)

Przykład pobrany z kursu Oracle SQL na platformie Udemy.

Tags: 

Klucz obcy (Foreign key)

W celu utworzenia tabeli z kluczem obcym nazwanej np. TABELA_FK odnoszącej się w kolumnie KURS_ID do kolumny ID z tabeli TABELA musimy odpowiednio skonstruować CONSTRAINT z kluczem obcym FK_P1:

CREATE TABLE TABELA_FK
(
ID INTEGER NOT NULL,
NAME VARCHAR2(20) NOT NULL,
KURS_ID INTEGER NOT NULL,
CONSTRAINT FK_P1 FOREIGN KEY (KURS_ID) REFERENCES TABELA(ID),
CONSTRAINT TABELA_FK2 PRIMARY KEY (ID)
);

Tags: 

Rankingi RANK, DENSE_RANK, PARTITION

RANK() - Tworzy ranking niegęsty

select
kolumna1,
kolumna2,
kolumna3,
RANK() OVER (order by kolumna3 desc) ranking
from tabela1

DENSE_RANK() - Tworzy ranking gęsty

select
kolumna1,
kolumna2,
kolumna3,
DENSE_RANK() OVER (order by kolumna3 desc) ranking_gesty
from tabela1

Tags: 

Strony

Subskrybuj RSS - oracle