[]-----------------------[]
 | 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;
Rekordok száma
14133

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';
ABBA számok száma
100

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;
Tárolóhely GB
80,43

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%';
Futrinkások
2

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%';
Ferencek száma
11386

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 %';
Ferencek száma
1446

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é';
Ferencek száma
1084

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 "Kez, Knézy, met stb nevű Ferencek sem:

SELECT COUNT(*) AS 'Ferencek száma' FROM _cimek WHERE nev LIKE '%Ferenc %' AND nev NOT LIKE '%né%';
Ferencek száma
1041

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