Állatorvos
— 3. feladat, Listázza ki a kutyatábla minden olyan mezőjét, amely nem idegenkulcs(FK)
- use allatorvos
- select *
- from kutya
— 4. feladat, Listázza ki a 10. kerületben élő gazdák nevét ABC sorrendben
- use allatorvos
- SELECT nev as ‘Gazda neve’, kerulet as ‘Kerület’
- FROM gazda
- WHERE kerulet like ’10’
- ORDER BY nev ASC
— 5. feladat, Listázza ki fajtánként csoportosítva az adatbázisban szereplő kutyák számát!
- use allatorvos
- SELECT f.fajtanev as ‘Fajta neve’, COUNT(f.id) as ‘darabszám’
- FROM kutya k INNER JOIN fajta f on k.fajtaId= f.id
- group by f.fajtanev
— 6. feladat, Listázza ki azokat a 2010 első hónapjában megkezdett kezeléseket, amelyek JELLEG mezőjében megtalálható”kezelés” szórészlet! Jelenjen meg a kezelés jellege, kezdő és befejezés dátuma és a kezelés díja!
- use allatorvos
- select kt.jelleg, k.kezdet, k.veg, k.dij
- from kezelestipus kt inner join kezeles k on kt.id=k.kezelestipusId
- where kt.jelleg like ‘%kezelés%’ and k.kezdet >= ‘2010-01-01’ and k.veg <= ‘2010-01-31’
— 7 feladat, Határozza meg, hogy Verpeléti Klaudia hányszor vitte kedvencét állatorvoshoz,
— és összesen mennyit fizetett a szolgáltatásokért!
— A megjelenő oszlopok fejlécében „alkalom” és az „összesen” szöveg jelenjen meg!
— Feltételezheti, hogy csak egy Verpeléti Katalin nevű gazda van az adatbázisban.
- use allatorvos
- select COUNT(*) as ‘alkalom’, SUM(ke.dij) as ‘összesen’
- from kutya k inner join gazda g on k.gazdaId=g.id inner join kezeles ke on k.id=ke.kutyaId
- where nev like ‘%Verpeléti Klaudia%’
- group by nev
EUROSKILLS 2018
— (3. feladat:) Az ünnepélyes eredményhirdetésen számos arany-, ezüst- és bronzérmet osztottak ki. Azoknak, akik lemaradtak a dobogóról, de legalább 700 pontot kaptak, „kiválósági érem” lett a jutalma! (Tudjuk, hogy egyik dobogós sem kapott 700 pontnál kevesebbet.) Lekérdezéssel határozza meg, hogy hány érmet osztottak ki! A számított mező címkéjét a minta szerint állítsa be!
- use euroskills
- select COUNT (id) as ‘érmek’
- from versenyzo
- where pont > 700
— (4. feladat:) Az orszag táblában szereplő nemzetek közül nem mindegyik vett részt a budapesti versenyen. Lekérdezéssel jelenítse meg ismétlődések nélkül azoknak az országoknak a nevét ábécé rendben, melyek indítottak versenyzőt a 2018-as EuroSkillsen!
- use euroskills
- select distinct orszagNev as ‘Országok indítottak versenyzőt’
- from orszag o inner join versenyzo v on o.id=v.orszagId
- order by orszagNev asc
— (5. feladat:) Hány versenyző vett részt a megmérettetésen az egyes szakmákban? Lekérdezéssel jelenítse meg a szakmák megnevezését és a részt vevő versenyzők számát úgy, hogy a legnépesebb
szakmával kezdődjön a lista! A számított mező címkéjét a minta szerint állítsa be!
- use euroskills
- select szakmaNev,COUNT(*) as ‘versenyzők száma’
- from versenyzo v inner join szakma sz on v.szakmaId=sz.id
- group by szakmaNev
- order by 2 desc;
— (6. feladat:) Lekérdezéssel készítse el a versenyzők összesített eredménylistáját! A lekérdezés a versenyzők nevét, országának nevét, szakmájának nevét és az elért pontszámot tartalmazza! Az eredményt rendezze a minta alapján pontszám szerint csökkenően! Azonos pontszám esetén ábécé rendben jelenjenek meg a versenyzők nevei! A lekérdezés által megjelenített sorokat korlátozza a legjobb 25 eredményre!
- use euroskills
- select top 25 nev, orszag.orszagNev, szakma.szakmaNev, pont
- from versenyzo inner join szakma
- on versenyzo.szakmaId = szakmaId inner join orszag
- on versenyzo.orszagId = orszagId
- order by pont desc
CNT – Alagút
— 3. Listázza ki az adatbázisban található alagutak nevét, hosszát! A lista az alagutak hossza szerint növekvő rendben legyen!
- use cnt
- select nev, hossz
- from alagut
- order by hossz asc
— 4. Listázza ki azoknakk az alagutaknak a nevét, melyek két tartományban fekszenek!
- use cnt
- select a.nev as nev
- from alagut a inner join tartomany t on a.tartomany2Id=t.id
— 5. Határozza meg régiónként az alagutak számát! A darabszám oszlop fejléc a minta szerint legyen!
- use cnt
- select r.nev, COUNT(*) as darab
- from alagut a inner join tartomany t on a.tartomanyId=t.id inner join regio r on r.id=t.regioId
- group by r.nev
— 6. Készítsen tarományok szerinti statisztikát az alagutak darabszámáról és hosszúságáról a következő minta sdzerint! A listába csak azok a tartományok kerüljenek bele, ahol az alagutak darabszáma 10 vagy annál több! Az oszlopok fejlécei a minta szerint legyenek!
- use cnt
- SELECT t.nev, COUNT() AS Darab, CAST(AVG(a.hossz) AS numeric (10,4)) as ‘Átlagos hossz’, MIN(a.hossz) as ‘Minimum hossz’, MAX(a.hossz) as ‘Maximum hossz’ FROM alagut a INNER JOIN tartomany t ON a.tartomanyId=t.id GROUP BY t.nev HAVING COUNT() >= 10
- FROM alagut a INNER JOIN tartomany t ON a.tartomanyId=t.id
- GROUP BY t.nev
- HAVING COUNT(*) >= 10
— 7. Határozza meg az előző feladatban bevitt atartományban fekvő leghosszabb alagút adatait és írja ki a minta szerint.
- use cnt
- SELECT *
- FROM alagut
- where hossz = (select MAX(hossz) from alagut)
VERSEK
1. feladat: Hozzon létre Versek adatbázist a szerveren!
- CREATE DATABASE Versek
- CHARACTER SET utf8
- COLLATE utf8_hungarian_ci;
- CREATE DATABASE Versek
- COLLATE hungarian_ci_as;
- SELECT SERVERPROPERTY(‘Collation’)
3. feladat: Állítsa be az idegenkulcsokat az ábra alapján!
- ALTER TABLE versek
- ADD CONSTRAINT FK_versek_szerzok_id FOREIGN KEY (szerzoid)
- REFERENCES szerzok (id);
- ALTER TABLE versek
- ADD CONSTRAINT FK_versek_verstipusok_id FOREIGN KEY (verstipusid)
- REFERENCES verstipusok (id);
4. feladat: Listázza ki az adatbázisban szereplő szerzők nevét ABC sorrendben!
- SELECT s.nev
- FROM szerzok AS s
- ORDER BY s.nev;
5. feladat: Listázza ki azokat a verscímeket, amik ‘haiku’ stílusban íródtak.
- SELECT v.cim
- FROM versek AS v
- INNER JOIN verstipusok AS v1 ON v.verstipusid = v1.id
- WHERE v1.elnevezes = ‘haiku’;
6. feladat: Írja ki, mely szerző regisztrált a legrégebben!
- SELECT s.nev
- FROM szerzok AS s
- ORDER BY s.reg_date ASC
- LIMIT 1;
7. feladat: Listázza ki azon szerzők nevét és az általuk írt vers címét, akik 2012-ben regisztráltak!
- SELECT s.nev, v.cim
- FROM szerzok AS s INNER JOIN versek AS v ON s.id = v.szerzoid
- WHERE s.reg_date BETWEEN ‘2012.01.01’ AND ‘2012.12.31’;
/vagy*/
- SELECT s.nev, v.cim
- FROM szerzok AS s
- INNER JOIN versek AS v ON s.id = v.szerzoid
- WHERE YEAR(s.reg_date) = 2012;
8. feladat: Listázza ki a „K” betűvel kezdődő szerzőknek hány versük van az adatbázisban!
- SELECT s.nev,
- COUNT(v.cim)
- FROM szerzok AS s
- INNER JOIN versek AS v ON s.id = v.szerzoid
- WHERE s.nev LIKE ‘K%’
- GROUP BY s.nev;
9. feladat: Listázza ki, mely verscímek ismétlődnek egynél többször az adatbázisban, írja ki mellé az ismétlődés számát is, válaszát csökkenő sorrendben jelenítse meg!
- use versek
- SELECT v.cim, COUNT(*) as ‘Ismétlődés száma’
- FROM versek AS v
- GROUP BY v.cim
- HAVING COUNT(*) > 1
- ORDER BY COUNT(*) DESC;
NORTHWIND
- use NORTHWND;
- SELECT TOP (3) WITH TIES EmployeeID, LastName, FirstName, HireDate
- FROM Employees
- ORDER BY HireDate;
–Adjuk meg a Northwind adatbázis Dolgozók (Employees) táblában szereplő főnökök számát, a beosztottak számát, valamint a dolgozók számát! COUNT
- use NORTHWND
- SELECT COUNT(*) as [Dolgozók száma], COUNT(ReportsTo) as [Beoszottak száma], COUNT(DISTINCT ReportsTo) as [Főnökök száma]
- FROM Employees;
- use NORTHWND
- SELECT City, COUNT() as [Dolgozók száma] FROM Employees WHERE EmployeeID < 9 GROUP BY City HAVING COUNT() >= 2
- ORDER BY [Dolgozók száma] DESC , City;
— 1. Listázzuk ki a Customers táblából az ügyfél kódját, nevét és a kapcsolattartó nevét!
- SELECT CustomerID, CompanyName, ContactName
- FROM Customers
— 2. Csak azokat az ügyfeleket, akiknek a kódja BOLID
- use NORTHWND
- SELECT *
- FROM Customers
- WHERE CustomerID = ‘BOLID’ –ha string akkor az operátor jobb oldalán ” jelek..
— 3. Listázzuk ki azokat az ügyfeleket, akiknek a kódja a B-E betűtartományba eső betűvel kezdődik
- use NORTHWND
- SELECT *
- FROM Customers
- WHERE CustomerID like ‘[B-E]%’
— 5. Termékek listája terméknév szerinti sorrendben
- use NORTHWND
- SELECT *
- FROM Products
- ORDER BY ProductName
— 6. Listázzuk ki azokat a termékeket, amelyek neve nem A,B vagy C betűvel kezdődik!
- use NORTHWND
- SELECT *
- FROM Products
- WHERE ProductName not like ‘[A-C]%’
–8. Adjuk meg azokat a termékeket (Products tábla), amelyekből a rendelés (UnitsOnOrder) több mint 0 és a készlet (UnitsInStock) kisebb, mint 10. Az eredményt a rendelt mennyiség szerint csökkenő sorrendben listázzuk ki.
- use NORTHWND
- SELECT *
- FROM Products
- WHERE UnitsOnOrder > 0 AND UnitsInStock < 10
- ORDER BY UnitsOnOrder DESC
— 9. Listázzuk ki azokat a termékeket (kód=ProductId és név=ProductName) amelyek egységára 50 és 90 dollár között van
- use NORTHWND
- SELECT ProductID, ProductName
- FROM Products
- –WHERE UnitPrice > 50 AND UnitPrice < 90
- WHERE UnitPrice between 51 and 89 — megengedett az 50 és 90 es érték..
— 10. Készítsünk listát, az 1996. dec 10 és 20 között érkezett megrendelésekről (Orders tábla). A listát elsődlegesen rendezzük a megrendelés dátuma szerint, másodlagosan az ügyfélkód szerint csökkenő sorrendben
- use NORTHWND
- SELECT *
- FROM Orders
- WHERE OrderDate > ‘1996-12-10’ AND OrderDate < ‘1996-12-20’
- ORDER BY OrderDate DESC , CustomerID DESC;
–11. Adjuk meg a Termékek számát!
- use NORTHWND
- SELECT Count(*) as [Termékeink száma]
- FROM Products
–12. Adjuk meg a Termékek számát termék kategóriák szerint!
- use NORTHWND
- SELECT CategoryID, Count(*) as [Terméke száma / Kategória]
- FROM Products
- GROUP BY CategoryID
–14. Adjuk meg azon termék kategóriáknak az átlagárait, amelyek átlagára több mint 30 dollár
- use NORTHWND
- SELECT CategoryID, AVG(UnitPrice) as [Átlagegységár / Kategória]
- FROM Products
- GROUP BY CategoryID
- HAVING AVG(UnitPrice) > 30
- ORDER BY [Átlagegységár / Kategória] DESC
–1. feladat Adjuk meg a 10251, 10255,10259 és 10263 rendelésszámú (OrderID) rendeléseket kezelő
–dolgozó kódját(EmployeeID) és a rendelés dátumát (OrderDate)!
- use NORTHWND
- SELECT OrderID, EmployeeID, OrderDate
- FROM Orders
- WHERE OrderID IN (10251,10255,10259,10263)
–2. feladat Adjuk meg a rendelési tételsorokban (Order Details) szereplő tételek rendelésszámát,
–termékkódját, mennyiségét (Quantity), egységárát (UnitPrice), kedvezményét (Discount) valamint a
–tételsor bruttó és nettó értékét, de csak azoknak a tételsoroknak, ahol kedvezmény jár.
- use NORTHWND
- SELECT OrderID, ProductID, UnitPrice, Quantity, Discount, QuantityUnitPrice as Brutto, QuantityUnitPrice*(1-Discount) as Netto
- FROM [Order Details]
- WHERE Discount > 0
–3. feladat Listázzuk ki a dolgozók kódját (EmployeeID) és teljes nevét (LastName és FirstName),
–valamint a születésnapját (születési dátum: BirthDate)!
- use NORTHWND
- SELECT EmployeeID, LastName + ‘ ‘ + FirstName as [Teljes Név], YEAR(BirthDate) as [Születési év],
MONTH(BirthDate) as [Születési Hónap] ,
DAY(BirthDate) as [Születési Nap] - FROM Employees
DATE
- SELECT CURRENT_TIMESTAMP As ‘AktuálisIdő’ –returns host gép dátum és idő értékét
- SELECT GETDATE() As ‘AktuálisIdő’
- SELECT GETUTCDATE()
— DATENAME – returns string
— DATEPART – returns int
- SELECT DATENAME(YEAR,GETDATE()) as ÉV — SELECT ÉV=(DATENAME(YEAR,GETDATE()))
- SELECT DATENAME(QUARTER,GETDATE())
- SELECT DATENAME(WEEK,GETDate())
- SELECT DATENAME(WEEKDAY,GETDate())
- SELECT DATEPART(WEEKDAY,GETDate())
- SELECT DATEPART(HOUR,GETDAte()) as óra
- SELECT DATEPART(MINUTE,GETDATE()) as perc
— DAY , MONTH , YEAR
- SELECT DAY(GETDATE())
- SELECT MONTH(GETDATE())
- SELECT YEAR(GETDATE())
–DATEFROMPARTS
- SELECT DATEFROMPARTS(2019,11,4) –returns date
- SELECT SMALLDATETIMEFROMPARTS(2019,11,4,10,5) –returns datetime
- SELECT TIMEFROMPARTS(10,5,5,5,5) –returns time
–DATEDIFF, DATEADD
- SELECT DATEDIFF(DAY,2023-29-11, 2023-04-11) as Napeltérés –returns int
- SELECT DATEADD(DAY,-70000,GETDATE())
–ISDATE – returns boolean – 1-> ha a bemeneti érték/típus valid datetime típus 0-> ha nem..
- SELECT ISDATE(GETDATE())
- SELECT ISDATE(NULL)
- SELECT GETDATE() as Aktuális_dátum
–Formázzuk meg, hogy a kimenet az alábbi módon nézzen ki: 2023.11.04
- SELECT FORMAT(GETDATE(),’yyyy.MM.dd’)
— Listázzuk ki a dolgozók teljesen nevét , és a csatlakozásuk idejét. A formátum pl.: 2023.11.04 év.hónap.nap
- SELECT TeljeseNév=(LastName+ ‘ ‘ +FirstName), FORMAT(HireDate,’yyyy.MM.dd’) as [Belépési Dátum],
- YEAR(HireDate) as BelépésiÉV, MONTH(HireDate) as BelépésiHó, DAY(HireDate) as BelépésiNap
- FROM Employees;
–1. Adjuk vissza a 1992 április 2 és 1992 augusztus 15 között csatlakozott dolgozókat! (–datetime)
- use NORTHWND
- SELECT TeljeseNév=(LastName+ ‘ ‘ +FirstName), HireDate as BelépésiDátum
- FROM Employees
- –WHERE HireDate between ‘1992-04-02 00:00:00’ AND ‘1992-08-15 23:59:59’
- WHERE HireDate >= ‘1992-04-02’ AND HireDate <= ‘1992-08-15’
–2. Számoljuk ki és listázzuk a dolgozóinkat és az ő életkorukat!
- use NORTHWND
- SELECT TeljeseNév=(LastName+ ‘ ‘ +FirstName), Eletkor=DATEDIFF(YEAR,BirthDate,GETDATE())
- FROM Employees
–3. Mióta dolgoznak a cégnél ?
- use NORTHWND
- SELECT TeljeseNév=(LastName+ ‘ ‘ +FirstName), [Cégnél ledolgozott évek száma]=DATEDIFF(YEAR,HireDate,GETDATE())
- FROM Employees
–3b -DATEDIFF NÉLKÜL, „KÉZZEL” számolva
- use NORTHWND
- SELECT TeljeseNév=(LastName+ ‘ ‘ +FirstName), [Cégnél ledolgozott évek száma]=(YEAR(GetDate())-YEAR(HireDate))
- FROM Employees
–4. Listázzuk ki azokat a dolgozókat, akik több mint 30 éve dolgoznak a cégnél!
- use NORTHWND
- SELECT *
- FROM Employees
- WHERE DATEDIFF(YEAR,HireDate,GETDATE()) > 30
–4.b ALLEKÉRDEZÉS
- use NORTHWND
- SELECT *
- FROM (SELECT TeljeseNév=(LastName+ ‘ ‘ +FirstName), [Cégnél ledolgozott évek száma]=DATEDIFF(YEAR,HireDate,GETDATE())
- FROM Employees) as dolgozoevek
- WHERE [Cégnél ledolgozott évek száma] > 30
–4.c VIEW használata
- use NORTHWND
- CREATE VIEW dolgozoevek
- AS
- SELECT TeljeseNév=(LastName+ ‘ ‘ +FirstName), [Cégnél ledolgozott évek száma]=DATEDIFF(YEAR,HireDate,GETDATE())
- FROM Employees
use NORTHWND
SELECT *
FROM dolgozoevek
WHERE [Cégnél ledolgozott évek száma] > 30
–5.Évente hány dolgozót vettünk fel ?
- use NORTHWND
- SELECT YEAR(HireDate) as FelvételÉve, COUNT(*) as Felvett_dolgozók_száma
- FROM Employees
- WHERE HireDate IS NOT NULL
- GROUP BY YEAR(HireDate)
- –HAVING YEAR(HireDate) IS NOT NULL
- ORDER BY FelvételÉve
–5. FORMAT HASZNÁLATÁVAL
- use NORTHWND
- SELECT FORMAT(HireDate,’yyyy’) as FelvételÉve, COUNT(*) as Felvett_dolgozók_száma
- FROM Employees
- WHERE HireDate IS NOT NULL
- GROUP BY FORMAT(HireDate,’yyyy’)
- ORDER BY FelvételÉve
SELECT * FROM Employees;
— hiredate 2022-05-05 00:00:00
INSERT INTO Employees(LastName,FirstName,HireDate) VALUES (‘Kiss’,’Attila’,’2022-05-05 00:00:00′)
INSERT INTO Employees(LastName,FirstName,HireDate) VALUES (‘Kovács’,’Péter’,’2023-09-24 00:00:00′)
–Listázzuk ki az utolsó 3 hónapban felvett dolgozóinkát!
–DATEDIFF, DAYADD
- SELECT *
- FROM Employees
- –WHERE DATEDIFF(MONTH,HireDate,GETDATE()) <= 3 WHERE HireDate >= DATEADD(MONTH,-380,GETDATE())
- –DELETE FROM Employees
- –WHERE EmployeeID = 12