Analitikus, statisztikai és szélsőérték fv-k
-
Upload
guy-pruitt -
Category
Documents
-
view
28 -
download
1
description
Transcript of Analitikus, statisztikai és szélsőérték fv-k
![Page 2: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/2.jpg)
A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!
![Page 3: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/3.jpg)
Analitikus fv-k
• Ezek a fv-k nincsenek az SQL nyelvben• Új fv család• 3 nagy csoport– RANG– Statisztikai– Hisztogram
![Page 4: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/4.jpg)
Általános felépítés
Fv_neve( [paraméter] ) OVER ( záradék )• Mindig a SELECT utasításrészben találhatóak • A paraméter tetszőleges oszlopkifejezés lehet• Az OVER záradék elhagyható
![Page 5: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/5.jpg)
A záradék bővebben
([partíció tag] [rendező tag[ablak-tag]])• Tulajdonképpen a munkaterületet jelöli ki az analitikus
záradék• Partíció tag: Egy munkatábla munkaterületén összefüggő
táblatartományokat képezhetünk, ahol az oszlopkifejezések értéke azonos
• Rendező tag: ORDER BY (partíción belüli rendezés)• Ablak tag: kijelöli minden partíción belül azt az összefüggő
táblatartományt, melynek sorain történik az analitikus fg. által kijelölt műveletvégzéstlehet fizikai vagy logikai
![Page 6: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/6.jpg)
RANG fv-k
• Over opcióval ellátott– RANK– DENSE_RANK– PERCENT_RANK
• Nem tartalmaznak ablak tagot, és paraméterlistájuk üres
• Rangsorolást végeznek• Hiányzó partíció tag esetén az egész táblán
rangsorolnak
![Page 7: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/7.jpg)
RANG fv-k
• RANK:1-től partíció méretéig sorszámozza (ellátja „rang”-gal) a sorokat
• DENSE_RANKu. a., mint a RANK, de ha 2 sornak ugyanazt a rangot adja, a következőnél a következő sorszámot adja (nem hagy ki sorszámot)
• PERCENT_RANK0-1 tartományban ossza ki a rangokat, úgy, hogy ha a sor rangja n, a partíció k sorból áll, akkor arang=(n-1)/(k-1)
![Page 8: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/8.jpg)
Példa
SELECT ename as nev, sal as fizu, RANK() OVER (Order by sal DESC) as normr, DENSE_RANK() OVER (Order by sal DESC) as tomor, PERECENT_RANK() OVER (Order by sal DESC) as szazFROM emp;
![Page 9: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/9.jpg)
Aggregáló RANG fv-k
• OVER helyett WITHIN GROUP opcióval vannak ellátva
• Nem is analitikus fv-k (működésük mögött analitikus fv.-k állnak)
• Paraméterként megadott konstans kifejezés értékének helyét keresi meg az egyes partíciókban, azt feltételezve, hogy ez a konstans az egyes partíciók eleme
• A paraméterlista már nem üres• Mi lenne, ha... típusú feladatok
![Page 10: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/10.jpg)
Példa
• Felvennénk egy új dolgozót, Jani bátyát.• Írjunk egy szkriptet, mely megmondja, hogy
egy adott fizu esetén, hányadik legtöbbet kereső emberke lenne?
• Magyarán kérjünk be egy fizetést, és nézzük meg, hogy hányadik lenne a rangsorban…
![Page 11: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/11.jpg)
Példa - megoldás
ACCEPT fizu PROMPT ’Fizu: ’;SELECT ’rangsora’ as Kérdés, RANK(&fizu) WITHIN GROUP (Order by sal DESC) as Normrang, DENSE_RANK(&fizu) WITHIN GROUP (Order by sal DESC) as Tomorrang, PERCENT_RANK(&fizu) WITHIN GROUP (Order by sal DESC) as SzrangFROM emp;
![Page 12: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/12.jpg)
Statisztikai analitikus fv-k
• Hagyományos statisztikai fv-knek (sum, min, max stb.) létezik analitikus alakja.
• Használata:fv_neve (paraméter/ALL/DISTINCT) OVER ( záradék )
![Page 13: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/13.jpg)
Példa
• Dolgozók fizetésének folyamatosan halmozott összege (kumulált összeg), fizetés szerint növekvően rendezve:
SELECT ename, job, SUM(sal) OVER (ORDER BY sal ASC) as ”Kumulalt”FROM emp;
![Page 14: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/14.jpg)
RATIO_TO_REPORT
• RATIO_TO_REPORT(kifejezés) OVER ( partíció tag)
• Kiszámítja az érték és a csoportösszeg közötti arányt
• (Részesedés)• Írjuk meg, hogy ki milyen arányban részesedik
az összfizetésből
![Page 15: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/15.jpg)
Példa
• SELECT ename as név, sal as fizetés, RATIO_TO_REPORT(sal) OVER () as részesedésFROM empORDER BY sal DESC;
![Page 16: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/16.jpg)
FIRST_VALUE/LAST_VALUE
• Hasonló mint a MIN/MAX• De ablaktartományokban is használhatóak• Alakja:
FIRST_VALUE/LAST_VALUE(kifejezés) OVER (analitikus utasításrész)
![Page 17: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/17.jpg)
Hisztogram fv-k
• WIDTH_BUCKET– WIDTH_BUCKET(oszlopkifejezés, alsóhatár,
felsőhatár, szeletek száma)– Nem is analitikus függvény– „azonos szélességű” hisztogram készíthető
segítségével, azaz meghatározza, hogy azonos méretű értéktartományokban az oszlopkifejezés értékei hogyan oszlanak meg
![Page 18: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/18.jpg)
Példa
• Csináljunk 4 fizetési kategóriát, és listázzuk ki, hogy ki hova tartozik.
• SELECT ename, sal, WIDTH_BUCKET(sal, 800, 5001, 4) as kategoriaFROM empORDER BY kategoria;
![Page 19: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/19.jpg)
NTILE függvény
• Hasonló mint a WIDTH_BUCKET, de itt a hisztogram azonos magasságú, és a szélesség különbözik
• Használata:NTILE(kifejezés) OVER ([Partíció] Rendező tag)
• Először rendez (Rendező tag szerint), majd a kifejezés értékének megfelelő számú résztartományra bont
![Page 20: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/20.jpg)
Példa
• Listázzuk fizetés szerint rendezve a dolgozók nevét, fizetését és fizetési kategóriáját, ahol ez utóbbit az összes dolgozó fizetési tartományának 3 részre osztásával úgy kapjuk meg, hogy minden részbe közel azonos számú dolgozó kerüljön.
• SELECT ename, sal,NTILE(3) OVER (order by sal DESC) as kategoriaFROM emp;
![Page 21: Analitikus, statisztikai és szélsőérték fv-k](https://reader035.fdocuments.net/reader035/viewer/2022062517/568132f0550346895d99abde/html5/thumbnails/21.jpg)
Köszönöm a figyelmeteket!