[]-----------------------[]
| MySQL feladatsor B |
[]-----------------------[]
Indítsa saját gépén a MySQL szervert, majd a kliens programot is!
A kliens programot használva végezze el a következő feladatokat...
A következő lekérdezések az _mp3 táblára vonatkoznak...
a) Állapítsa meg hány rekord van a táblában!
(Rekordok száma)
SELECT COUNT(*) AS 'Rekordok száma' FROM _mp3;
b) Listázza ki az _mp3 tábla szerkezetét!
DESC _mp3;
| Field |
Type |
Null |
Key |
Default |
Extra |
| CD |
varchar(30) |
YES |
|
|
|
| Előadó |
varchar(255) |
YES |
|
|
|
| Cím |
varchar(255) |
YES |
|
|
|
| Album |
varchar(255) |
YES |
|
|
|
| Dátum |
varchar(255) |
YES |
|
|
|
| Megjegyzés |
varchar(255) |
YES |
|
|
|
| Idő |
datetime |
YES |
|
|
|
| Méret |
int(11) |
YES |
|
|
|
| Bitráta |
int(11) |
YES |
|
|
|
c) Állapítsa meg hány ABBA slágert tartalmaz a tábla!
(ABBA számok száma)
SELECT COUNT(*) AS 'ABBA számok száma' FROM _mp3 WHERE Előadó='ABBA';
d) Állapítsa meg mennyi byte szükséges a nyilvántartott zenei fájlok tárolásához!
(Tárolóhely byte)
SELECT SUM(Méret) AS 'Tárolóhely byte' FROM _mp3;
| Tárolóhely byte |
| 86 358 191 591 |
e) Állapítsa hány GB hely szükséges a nyilvántartott zenei fájlok tárolásához!
(Tárolóhely GB)
SELECT ROUND(SUM(Méret)/1024/1024/1024,2) AS 'Tárolóhely GB' FROM _mp3;
f) Készítse el a számok listáját Előadó és Cím szerint rendezve!
(Előadó, Cím)
SELECT Előadó,Cím FROM _mp3 ORDER BY Előadó,Cím;
| Előadó |
Cím |
|
*01 |
|
*02 |
|
*03 |
| ... |
... |
Sok lenne ide beilleszteni mind a 14133 rekordot Ezért csak az eleje, illetve vége szerepel itt. |
| ... |
... |
| ZZ TOP |
I'm Bad, I'm Nationwide |
| ZZ TOP |
La Grande |
| ZZ TOP |
Legs |
| ZZ TOP |
My Head's In Mississippi |
| ZZ TOP |
Pearl Necklace |
| ZZ TOP |
Planet Of Woman |
| ZZ TOP |
Rough Boy |
| ZZ Top |
Rough Boy |
| ZZ TOP |
Sharp Dressed Man |
| ZZ TOP |
Sleeping Bag |
| ZZ TOP |
Tube Snake Boogie |
| ZZ TOP |
Tush |
| ZZ TOP |
Viva Las Vegas |
g) Állapítsa meg, egy-egy előadónak hány különböző száma van nyilvántartva!
(Előadó, Számok száma)
SELECT Előadó, COUNT(*) AS 'Számok száma' FROM _mp3 GROUP BY Előadó;
| Előadó |
Számok száma |
|
63 |
| ... |
21 |
| 'N SYNC |
8 |
| 'N Sync with G. Estefan |
1 |
| 'NSync |
14 |
| *'N Sync |
7 |
| *Ace of Base |
21 |
| *Alice Deejay |
1 |
| *Betty Love |
1 |
| *Black and White Brothers |
1 |
| *Black Box |
2 |
| ... |
... |
Sok lenne ide beilleszteni mind a 1461 rekordot Ezért csak az eleje, illetve vége szerepel itt. |
| ... |
... |
| Zalatnay |
15 |
| Zámbó Jimmy |
14 |
| Zapata |
1 |
| Zárai Márta-Vámosi János |
1 |
| Zhi-Vago |
1 |
| Zimet, Ben |
14 |
| Zoltán Erika |
2 |
| Zoom |
1 |
| Zorán |
92 |
| Zorba The Greek |
12 |
| Zucchero & Randy Crawford |
1 |
| ZZ TOP |
20 |
h) Állapítsa meg, mely előadóknak van 50-nél több különböző száma nyilvántartva!
(Előadó, Számok száma)
SELECT Előadó, COUNT(*) AS 'Számok száma' FROM _mp3 GROUP BY Előadó HAVING COUNT(*) > 50;
| Előadó |
Számok száma |
|
63 |
| ABBA |
100 |
| AC-DC |
77 |
| Aerosmith |
75 |
| Ákos |
109 |
| Ámokfutók |
61 |
| Andrea Bocelli |
101 |
| Andreas Vollenweider |
124 |
| Beatles |
129 |
| Bee Gees |
52 |
| Bon Jovi |
69 |
| Bonanza Banzai |
85 |
| Celine Dion |
66 |
| Chris Rea |
75 |
| Cirque Du Soleil |
70 |
| D.J. BoBo |
90 |
| Deep Forest |
66 |
| Dire Straits |
83 |
| EDDA |
90 |
| Elvis Presley |
70 |
| Enigma |
66 |
| Ennio Morricone |
72 |
| Enya |
51 |
| Gary Moore |
90 |
| Gipsy Kings |
51 |
| Handel |
53 |
| Helloween |
73 |
| Hobo Blues Band |
135 |
| Hungária |
83 |
| Iron Maiden |
73 |
| Jean Michel Jarre |
66 |
| Koncz Zsuzsa |
74 |
| Külföldi Előadók |
370 |
| L.G.T. |
79 |
| Madonna |
75 |
| MARIAH CAREY |
81 |
| Metallica |
76 |
| Mike Oldfield |
143 |
| Modern Talking |
77 |
| Mr. President |
55 |
| Omega |
205 |
| Paul Anka |
58 |
| Pink Floyd |
91 |
| Piramis |
55 |
| Queen |
138 |
| Republic |
132 |
| Santana |
92 |
| Scorpions |
121 |
| Simon & Garfunkel |
67 |
| Szekeres Tamás |
106 |
| Tangerine Dream |
55 |
| Tankcsapda |
87 |
| Tátrai Band |
139 |
| The Kelly Family |
56 |
| U2 |
79 |
| Vangelis |
170 |
| Zorán |
92 |
A következő lekérdezések a cdolgozo táblára vonatkoznak...
i) Kérdezze le, hogy beosztásonként hány fő dolgozik a cégnél!
(Beosztás, Létszám)
SELECT beo AS Beosztás, COUNT(*) AS Létszám FROM cdolgozo GROUP BY beo;
| Beosztás |
Létszám |
| Eladó |
4 |
| Elemző |
2 |
| Elnök |
1 |
| Ügyintéző |
4 |
| Vezető |
3 |
j) Állapítsa meg melyik az a fizetési összeg, amely többször is szerepel a nyilvántartásban!
(Fizetés, Darabszám)
SELECT fiz Fizetés, COUNT(*) Darabszám FROM cdolgozo GROUP BY fiz HAVING COUNT(*) > 1;
| Fizetés |
Darabszám |
| 75000 |
2 |
| 180000 |
2 |
k) Állapítsa meg mely napon léptek be legtöbben a céghez!
(Dátum, Létszám)
Segítség: date(belep)
SELECT DATE(belep) AS Dátum, COUNT(*) AS Létszám FROM cdolgozo GROUP BY belep ORDER BY 2 DESC LIMIT 1;
| Dátum |
Létszám |
| 1991-12-01 |
2 |
l) Kérdezze le, hogy egységenként mennyi a dolgozók létszáma!
(Egységkód, Létszám)
Segítség: EKOD = Egységkód
SELECT ekod AS 'Egységkód', COUNT(*) AS Létszám FROM cdolgozo GROUP BY 1;
| Egységkód |
Létszám |
| 10 |
3 |
| 20 |
5 |
| 30 |
6 |
A következő lekérdezések a _cimek táblára vonatkoznak...
m) Állapítsa meg hányan laknak a futrinka utcában!
(Futrinkások)
SELECT COUNT(*) AS Futrinkások FROM _cimek WHERE cim LIKE '%Futrinka%';
n) Mutassa ki hány Ferenc nevű nyilvántartottunk van!
(Ferencek száma)
Ez egy látszólag egyszerű, de valójában nem egyszerű feladat. Mert ha azt szeretnénk, hogy számolja meg hány névben szerepel a "Ferenc" karakterlánc akkor:
SELECT COUNT(*) AS 'Ferencek száma' FROM _cimek WHERE nev LIKE '%Ferenc%';
Azonban így szerepel az összes "Ferencné" is a listában, akik ugye nem "Ferencek". Próbáljuk meg a következőt: ("Ferenc[szóköz]")
SELECT COUNT(*) AS 'Ferencek száma' FROM _cimek WHERE nev LIKE '%Ferenc %';
Ez már közelebb van a valósághoz, de még mindig nem jó. Szerepelnek benne olyan nevek, mint pl.:
MEZEY FERENC JÓZSEFNÉ
TÜSKE FERENC MÁRTONNÉ
vagy éppen FERENC ADRIENN
FERENC ENIKŐ BRIGITTA stb.
próbálkozzunk hát a következővel, egészítsük ki azzal, hogy nem tartalmazhat a név ilyen karakterláncot: "[bármi]NÉ"
hirtelen nem tudok olyan férfi keresztnevet amely "NÉ" -re végződne, tegyük fel, hogy még ha van is ilyen, akkor a táblánkban nincs olyan Ferenc, akinek két keresztneve lenne és a másik pont egy ilyen "NÉ"-re végződő.
Nagyobb a valószínűsége, hogy létezhet ilyenre végződő vezetéknevű Ferenc:
SELECT COUNT(*) AS 'Ferencek száma' FROM _cimek WHERE nev LIKE '%Ferenc %' AND nev NOT LIKE '%né';
A lekérdezés eredménye elszomorító:
BIRTALANNÉ FERENC MÓNIKA
KISMŐDINÉ KIS-FERENC KATALIN
SURÁNYINÉ PAP-FERENC IZOLDA stb.
Na jó, szűrjük ki csak kíváncsiságképpen az összes "NÉ"-t, felvállalva eezzel, hogy nem fognak szerepelni az esetleges "Kenéz, Knézy, Német stb nevű Ferencek sem:
SELECT COUNT(*) AS 'Ferencek száma' FROM _cimek WHERE nev LIKE '%Ferenc %' AND nev NOT LIKE '%né%';
Kész feladom:
DR FERENC DIÁNA
FERENC ADRIENN
FERENC ENIKŐ BRIGITTA
FERENC KLÁRA LUCA stb.
Ilyenekre nem lehet felkészülni, most értettem meg, hogy miért is fontos, az eddig csak idegesítő hülyeségnek tartott, űrlapok kitöltésekor odabiggyesztett "neme:" beviteli mezőt. Bár, manapság...
o) Kérdezze le, melyik 5 (nem budapesti) városból szerepelnek legtöbben a nyilvántartásban!
(Város, Rekordok száma)
SELECT varos AS Város, COUNT(*) AS 'Rekordok száma'
FROM _cimek GROUP BY varos HAVING varos NOT LIKE '%Budapest%' ORDER BY 2 DESC LIMIT 5 ;
vagy
SELECT varos AS Város, COUNT(*) AS 'Rekordok száma' FROM _cimek WHERE varos NOT LIKE '%Budapest%'
GROUP BY varos ORDER BY 2 DESC LIMIT 5 ;
| Város |
Rekordok száma |
| SZEGED |
10354 |
| DEBRECEN |
8469 |
| PÉCS |
6106 |
| SZÉKESFEHÉRVÁR |
5884 |
| GYŐR |
5551 |
p) Állapítsa meg melyik 10 név fordul elő legtöbbször a táblában!
(10 gyakori név)
Jegyezze le mennyi időt vett igénybe a lekérdezés végrehajtása!
SELECT nev AS '10 gyakori név',COUNT(*) AS db FROM _cimek GROUP BY nev order BY 2 desc LIMIT 10;
| 10 gyakori név |
db |
| NAGY LÁSZLÓ |
245 |
| SZABÓ LÁSZLÓ |
241 |
| TÓTH LÁSZLÓ |
225 |
| TÓTH ISTVÁN |
199 |
| KOVÁCS LÁSZLÓ |
196 |
| NAGY ZOLTÁN |
188 |
| NAGY SÁNDOR |
181 |
| HORVÁTH LÁSZLÓ |
173 |
| NAGY GÁBOR |
172 |
| NAGY ISTVAN |
172 |
Talált sorok: 10 Figyelmeztetés: 0 Időtartam 1 lekérdezés: 7,750 mp.
KÉSZÍTSEN egy INDEX ÁLLOMÁNYT a _cimek táblához a nev mező alapján:
create index idx_nev on _cimek (nev);
q) Hajtsa végre újra a p) lekérdezést! Hasonlítsa össze a lekérdezések végrehajtási sebességét!
Mennyivel gyorsult a lekérdezés végrehajtása?
SELECT nev AS '10 gyakori név',COUNT(*) AS db FROM _cimek GROUP BY nev order BY 2 desc LIMIT 10;
| 10 gyakori név |
db |
| NAGY LÁSZLÓ |
245 |
| SZABÓ LÁSZLÓ |
241 |
| TÓTH LÁSZLÓ |
225 |
| TÓTH ISTVÁN |
199 |
| KOVÁCS LÁSZLÓ |
196 |
| NAGY ZOLTÁN |
188 |
| NAGY SÁNDOR |
181 |
| HORVÁTH LÁSZLÓ |
173 |
| NAGY GÁBOR |
172 |
| NAGY ISTVAN |
172 |
Talált sorok: 10 Figyelmeztetés: 0 Időtartam 1 lekérdezés: 0,453 mp.
7,750 <---> 0,453 mp, több mint 7 másodperccel gyorsabb a lekérdezés
TÖRÖLJE ki az INDEX ÁLLOMÁNYT:
drop index idx_nev on _cimek;
r) Hajtsa végre újra a p) lekérdezést! Csökkent a végrehajtás sebessége?
SELECT nev AS '10 gyakori név',COUNT(*) AS db FROM _cimek GROUP BY nev order BY 2 desc LIMIT 10;
| 10 gyakori név |
db |
| NAGY LÁSZLÓ |
245 |
| SZABÓ LÁSZLÓ |
241 |
| TÓTH LÁSZLÓ |
225 |
| TÓTH ISTVÁN |
199 |
| KOVÁCS LÁSZLÓ |
196 |
| NAGY ZOLTÁN |
188 |
| NAGY SÁNDOR |
181 |
| HORVÁTH LÁSZLÓ |
173 |
| NAGY GÁBOR |
172 |
| NAGY ISTVAN |
172 |
Igen lassabb lett a végrehajtás sebessége:
Talált sorok: 10 Figyelmeztetés: 0 Időtartam 1 lekérdezés: 7,796 mp.
A következő lekérdezések az _orszagok táblára vonatkoznak...
s) Állapítsa meg, hogy egy-egy államforma hányszor fordul elő a táblában!
(Államforma, Előfordulások száma)
SELECT allamforma AS Államforma, COUNT(*) AS 'Előfordulások száma' FROM _orszagok GROUP BY allamforma;
| Államforma |
Előfordulások száma |
| abszolút monarchia |
2 |
| alkotmányos királyság |
2 |
| alkotmányos monarchia |
31 |
| államszövetség |
2 |
| autonóm hercegség |
1 |
| elnöki köztársaság |
47 |
| föderativ köztársaság |
1 |
| hercegség |
1 |
| iszlám abszolút monarchia |
1 |
| iszlám köztársaság |
1 |
| iszlám népköztársaság |
1 |
| iszlám szövetségi köztársaság |
1 |
| királyság |
1 |
| köztársaság |
75 |
| nagyhercegség |
1 |
| népi demokratikus köztársaság |
1 |
| népköztársaság |
4 |
| parlamentáris köztársaság |
3 |
| sejkség |
1 |
| szocialista köztársaság |
2 |
| szövetségi állam |
1 |
| szövetségi köztársaság |
12 |
| szultanátus |
1 |
| teokratikus abszolút monarchia |
1 |
t) Számíttassa ki az európai fővárosok lakosainak összesített létszámát!
(Fővárosiak)
SELECT SUM(nep_fov) AS 'Fővárosiak (ezer fő)' FROM _orszagok WHERE foldr_hely LIKE '%európa%';
| Fővárosiak (ezer fő) |
| 73298 |
generated 2022-12-02 22:21:27 by HeidiSQL 10.2.0.5723