SQL aggregálás, csoportosítás és összekapcsolás Adatbázisok 1.

Slides:



Advertisements
Hasonló előadás
2012. tavaszi félév Vitéz Gergely. 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.
Advertisements

10. gyakorlat SQL SELECT.
Tananyag: konzultáció
2012. tavaszi félév Véső Tamás. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
2012. tavaszi félév Vitéz Gergely. 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.
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda 4. Előadás Az SQL adatbázisnyelv Sorváltozók Alkérdések Ismétlődő sorok Összesítések 1.
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
Analitikus függvények
Analitikus, statisztikai és szélsőérték fv-k Hári Veronika
Analitikus, statisztikai és szélsőérték fv-k Rózsa Győző
Anyagadatbank c. tárgy gyakorlat
Elmaradás.  0 Számjegy. Ebben a pozícióban egyetlen számjegyet kell megadnia.  9 Számjegy. Ebben a pozícióban egyetlen számjegyet lehet megadni, nem.
Microsoft Access Lekérdezések.
2012. tavaszi félév Vitéz Gergely. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
Delphi programozás alapjai
Azonosítók és képzési szabályaik
Adatbázis gyakorlat – SUBSELECT – Tarcsi Ádám március.
Többtáblás lekérdezések, allekérdezések Rózsa Győző
SQL – DQL (Data Query Language ) adat lekérdezések
SQL Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések
(MY)SQL MEGJEGYZÉSEK. MYISAM VS. INNODB  A MySQL-ben többféle tárolási motor is használatos: MyISAM, InnoDB  A régebbi verziókban a MyISAM alapértelmezett,
Adatbázis-kezelés.
Adatbáziskezelés Horváth Ernő.
Adatbázis-kezelés ACCESS program:
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 4. Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
ADATBÁZISOK
ADATBÁZISOK
Részletező csoportosítások Rózsa Győző
ADATBÁZIS HASZNÁLAT I. 2. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
Érettségi feladatok megoldása LINQ-kel
Adatbázis kezelés SQL. Történeti áttekintés 1976IBM:SEQUEL,SQL 1976IBM:SEQUEL,SQL 1983ORACLE 1983ORACLE 1984INFORMIX 1984INFORMIX 1986SQL – szabvány :
Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
Algebrai műveleti gráf optimalizálása ● Mennyi könyvet készített az idén legtöbbet kinyomtató Budapesti könyvkiadó? ● kiado(kod,nev,cim) ● konyv ( kiado,cim,ar,ev.
- adatbázisséma definiálása (DDL) Data Definition Languages, - adatok aktualizálása (DML),Data Maniputaion Language - lekérdezési lehetőségek (DML) Data.
SQL.
Az SQL nyelv alapjai.
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 18.
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 29.
Részletező csoportosítások Hári Veronika
Részletező csoportosítások Rózsa Győző
Adatbázis használat I. 2. gyakorlat.
ADATBÁZIS HASZNÁLAT I. 3. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
Adatbázis-kezelés SQL-lel
Készítette: Tóth Ervin
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
DQL. A select parancs az adattábla lekérdezésére szolgál, azaz a táblában tárolt adatok közül az előírt feltételeknek megfelelőket kiválogatja. Formája.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 10. gyakorlat SQL SELECT, Összekapcsolás, Nézettáblák.
XML fejlesztések TSQL fejlesztések Tábla paraméter SQLCLR fejlesztések 8k limit feloldása Több paraméteres UDA-ek Ordered UDF-ek Entity Framework ADO.NET.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
SQL SELECT parancsok Kottyán László. A bemutató mintatáblái.
1 Informatikai Szakképzési Portál Adatbázis kezelés DQL – Adatlekérdező nyelv.
Adatbázisok gyakorlat
SQL haladó Külső összekapcsolások, Csoportosítás/Összesítés,
Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
2. AB gyakorlat Egytáblás csoportosító lekérdezések.
SQL történelem 1970 Edgar F. Codd (IBM) cikke 12 szabály a relációs adatmodellekre 1979 első kereskedelmi forgalmazású relációs adatbáziskezelő 1986 az.
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
Adatbázis-kezelés. Középszint: –1-2 tábla –SQL-nyelv és lekérdező-rács használata –Űrlap és jelentés készítés Emelt szint: –több tábla (kapcsolatok) –több.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
SQL bevezetés Select-From-Where záradékok
Adatbázisok 1. SQL (alkérdések). Az IN használata Emlékezzünk vissza: Az IN után szereplő multihalmaz elemei lekérdezéssel is megadhatók SELECT nev FROM.
SQL Több táblás lekérdezések. Halmazműveletek. Alkérdések
Naplóelemzés Log Parserrel
Adatbázisok SQL.
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda
Előadás másolata:

SQL aggregálás, csoportosítás és összekapcsolás Adatbázisok 1

Sor- és oszlopfüggvények SQL lekérdezésekben többféle függvényt használhatunk sorfüggvények: bemenő paramétere(i) a reláció egy-egy sorának egy vagy több mezőértéke oszlopfüggvények: bemenő paraméter egy oszlop vagy oszlopokat használó kifejezés értékei Sorfüggvény például: UPPER, TO_CHAR stb. A legfontosabb oszlopfüggvények MIN MAX COUNT AVG SUM

Oszlopfüggvények Az oszlopfüggvényeket nevezik még aggregáló, csoportosító és összesítő függvényeknek is. Csak a SELECT vagy HAVING záradékokban szerepelhetnek azaz a WHERE záradékban nem fordulhatnak elő!

Példák SELECT COUNT(nev) FROM szeret; SELECT COUNT(DISTINCT nev) FROM szeret; SELECT COUNT(*) FROM szeret; SELECT MAX(datum), MIN(datum) FROM csatak; SELECT osztaly FROM hajoosztalyok WHERE vizkiszoritas = (SELECT MAX(vizkiszoritas) FROM hajoosztalyok);

Maximum és minimum keresés SELECT * FROM (SELECT osztaly, vizkiszoritas FROM hajoosztalyok ORDER BY vizkiszoritas DESC) WHERE ROWNUM = 1; A lekérdezés O(n*log(n)) időben fut le. Ha több maximum is létezik, csak egyet ad vissza.

Egy lassabb megoldás SELECT osztaly, vizkiszoritas FROM hajoosztalyok WHERE vizkiszoritas >= ALL (SELECT vizkiszoritas FROM hajoosztalyok); Ha több maximum is létezik, a lekérdezés mindegyiket visszaadja. Viszont O(n 2 ) időben fut.

Egy jobb megoldás SELECT osztaly, vizkiszoritas FROM hajoosztalyok WHERE vizkiszoritas = (SELECT MAX(vizkiszoritas) FROM hajoosztalyok); Lineáris időben fut. Az összes maximum értéket visszaadja.

Csoportosítás Sok gyakorlati alkalmazás esetében hasznos, ha az adatokból (sorokból) csoportokat képezhetünk, s ezekre számolhatunk aggregált értékeket. Például előfordulhat, hogy nem azt szeretnénk tudni, hogy hány hajó vett részt a csatákban összesen, hanem inkább arra vagyunk kíváncsiak, hogy egy-egy csatában hány hajó küzdött egymással. Az ilyen lekérdezések megfogalmazását teszi lehetővé a GROUP BY záradék.

Példa csoportosításra SELECT csata, COUNT(hajo) AS db FROM kimenetelek GROUP BY csata; csatahajo  GuadalcanalSouth Dakota  GuadalcanalKirishima  GuadalcanalWashington  North CapeDuke of York  North CapeScharnhorst  

GROUP BY több attribútummal SELECT csata, osztaly, COUNT(nev) AS db FROM kimenetelek, hajok WHERE hajo = nev GROUP BY csata, osztaly; Először a csata attribútum értékei szerint csoportosítunk, majd ezeken a csoportokon belül az osztály attribútum értékei szerint további csoportok képződnek.

Fontos szintaktikai megszorítás Ha a SELECT záradékban csoportosító függvény is szerepel, akkor csak azok az attribútumok jelenhetnek meg "szabadon", amelyek a GROUP BY záradékban is meg lettek adva. Szabadon, azaz nem egy csoportosító függvény paramétereként.

Példák SELECT osztaly, MAX(vizkiszoritas) FROM hajoosztalyok; SELECT csata, hajo,COUNT(hajo) FROM kimenetelek GROUP BY csata;

HAVING záradék Csoportokra vonatkozó, összesítő függvényt használó feltételt a HAVING záradékban adhatunk meg. SELECT nev FROM szeret GROUP BY nev HAVING COUNT(*) = 2;

Újabb szintaktikai szabály Hasonlóan a SELECT záradékhoz, egy attribútum csak akkor szerepelhet szabadon a HAVING záradékban, ha a GROUP BY részben is megjelenik.

Példák SELECT nev FROM szeret GROUP BY nev HAVING COUNT(*) = 2 AND nev LIKE '%A%'; SELECT nev FROM szeret GROUP BY nev HAVING COUNT(*) = 2 AND gyumolcs LIKE '%A%'; SELECT nev FROM szeret GROUP BY nev WHERE gyumolcs LIKE '%A%' HAVING COUNT(*) = 2;

Összekapcsolások SELECT * FROM hajok JOIN kimenetelek ON nev = csata; SELECT * FROM hajok LEFT JOIN kimenetelek ON nev = csata; SELECT * FROM hajok RIGHT JOIN kimenetelek ON nev = csata; SELECT * FROM hajok FULL OUTER JOIN kimenetelek ON nev = csata; SELECT * FROM hajok NATURAL JOIN hajoosztalyok;

Feladatok I. 1.Hány különböző hajó és csata szerepel a Kimenetelek táblában? 2.Mely hajóosztályoknál magasabb az ágyúk száma, mint az átlag? 3.Melyik a legkorábbi csata? 4.Mely hajók maradtak épek a legkorábbi csatában? 5.Melyik a második legkorábbi csata? 6.A legkevesebb gyümölcsöt szeretők közül kinek a neve szerepel legelöl az ABC-ben? 7.Hajóosztályonként adjuk meg, hogy az egyes osztályokhoz hány hajó tartozik.

Feladatok II. 8.Melyik évben avatták fel a legtöbb hajót? 9.Melyik az az ország, melynek a legtöbb hajója süllyedt el? 10.Melyek azok a csaták, amelyekben legalább három hajó részt vett? 11.Csatánként adjuk meg azt a legkorábbi évszámot, amikor a csatában részt vett hajók közül legalább egyet felavattak! 12.Melyik hajót avatták fel ötödik legkorábban? 13.Kik szeretnek minden gyümölcsöt? 14.Mely hajók nem vettek részt egy csatában sem? 15.Országonként adjuk a hajók számát és az elsüllyed hajók számát.