/*
SELECT-ek a SzinhPortal adatbazisban 
1. ora - 8. het - 2016.11.23.

Harmadik csoport

*/


use SzinhPortal;
go

/*
Listazza ki a nyilvantartott orszagokat
*/

select *
	from dbo.ORSZAG;
go

/*
Listazza ki a nyilvantartott orszagokat, de ugy, hogy az E-tabla
fejlece a kovetkezo legyen:
Orszagnev, Felsegjelzes, Azonosito az Orszag tablaban
*/

select ORSZAGNEV as "Orszagnev", ORSZAG_JELZES as "Felsegjelzes",
		ORSZAG_AZ as "Azonosito az Orszag tablaban"
	from ORSZAG;
go

/*
Szamlaljuk meg a nyilvantartasban szereplo orszagok szamat
*/

select COUNT(ORSZAG_AZ) as "Orszagok szama"
	from ORSZAG;
go

/*
Hany hat betutol hosszabb nevu orszagot tartunk nyilvan
*/

select COUNT(ORSZAG_AZ) as "Orszagok szama"
	from ORSZAG
	where LEN(ORSZAGNEV)>6;
go

/*
Menyek azok az orszagok a nyilvantartasban, amelyeknek
a neve hat betutol hosszabb
*/

select ORSZAGNEV as "Orszagnev", ORSZAG_JELZES as "Felsegjelzes",
		ORSZAG_AZ as "Azonosito az Orszag tablaban"
	from ORSZAG
	where LEN(ORSZAGNEV)>6;
go






/*
SELECT-ek a SzinhPortal adatbazisban 
2. ora - 9. het - 2016.11.30.

Harmadik csoport

*/

use SzinhPortal;
go

/* !!!
Listazzuk az adatokat az orszagokrol az Orszag tablabol
a kovetkezo fejleccel
Az orszag neve, Magyarazat, Felsegjelzes, Azonosito az Orszag tablaban,
a Magyarazat oszlop tartalma pedig "felsegjelzese" legyen 
minden sorban
*/

select ORSZAGNEV as "Az orszag neve",
		'felsegjelzese' as "Magyarazat",
		ORSZAG_JELZES as "Felsegjelzes",
		ORSZAG_AZ as "Azonosito az Orszag tablaban"
	from ORSZAG;
go


/*
Hany nyilvantartott orszag van az Orszag tablaban

*/
select COUNT(ORSZAG_AZ)
	from ORSZAG;
go


insert ORSZAG
	values(6,'Mongolia',null);
go

select * from ORSZAG;
go


select COUNT(ORSZAG_JELZES)
	from ORSZAG;
go

/*
Hany nyilvantartott orszagnal hianyzik a felsegjelzes
*/

select COUNT(ORSZAG_AZ) as "Orszagok szama, ahol nincs felsegjelzes"
	from ORSZAG
	where ORSZAG_JELZES is null;
go


	
/*
Hany orszagnev hosszabb, mint 12 karakter?
*/

select COUNT(ORSZAG_AZ)
	FROM ORSZAG
	WHERE LEN(ORSZAGNEV)>12;
GO


/*
Melyek azok az orszagok, amelyeknek neve hosszabb, mint 12 karakter?
*/
select ORSZAGNEV
	from ORSZAG
	where LEN(ORSZAGNEV)>12;
go

/*
Melyek azok az orszagok, amelyeknek a nevhossza
8 es 12 karakter koze esik?
*/
select ORSZAGNEV
	from ORSZAG
	where len(ORSZAGNEV) between 8 and 12;
go

select ORSZAGNEV
	from ORSZAG
	where len(ORSZAGNEV) >7 and len(ORSZAGNEV)< 13;
go



/*
Listazza ki az orszagneveket csupa nagybetuvel,
a mai datumot, es az orszagnevek elso ket betujet
*/
select UPPER(ORSZAGNEV), GETDATE(),
	SUBSTRING(ORSZAGNEV,1,2)
	from ORSZAG;
go

select UPPER(ORSZAGNEV), convert(date,GETDATE()),
	left(ORSZAGNEV,2)
	from ORSZAG;
go



/*
Primer za ilustraciju sadrzaja char u varchar tipa polja
listazzuk az orszagneveket, az orszagnevek utolso harom betujet
es a felsegjelzes utolso harom betujet
*/

select ORSZAGNEV,
		RIGHT(ORSZAGNEV,3),
		RIGHT(ORSZAG_JELZES,3)
	from ORSZAG;
go

select ORSZAGNEV,
		RIGHT(ORSZAGNEV,3),
		substring(ORSZAG_JELZES,len(ORSZAG_JELZES)-2,3)
	from ORSZAG;
go


/*
Hany (kulonbozo) varosnev van a Szinhaz tablaban? 
*/
select count(SZ_H_CIM_HELYSEG)
	from dbo.SZINHAZ;
go

select * from dbo.SZINHAZ;
go

select count(distinct SZ_H_CIM_HELYSEG)
	from dbo.SZINHAZ;
go



/*
Hany (kulonbozo) varosnev van a Szinhaz tablaban, 
amelyik B betuvel kezdodik? 
- left, substring, like
*/
select COUNT(SZ_H_CIM_HELYSEG)
	from SZINHAZ
	where left(SZ_H_CIM_HELYSEG,1)='B';
go
	
select COUNT(SZ_H_CIM_HELYSEG)
	from SZINHAZ
	where substring(SZ_H_CIM_HELYSEG,1,1)='B';
go

select COUNT(SZ_H_CIM_HELYSEG)
	from SZINHAZ
	where SZ_H_CIM_HELYSEG like 'B%';
go
select SZ_H_CIM_HELYSEG
	from SZINHAZ
	where SZ_H_CIM_HELYSEG like 'B%';
go



/*
Hany B betuvel kezdodo es 8 karakter hosszu varosnevunk van?
*/
select COUNT(SZINHAZ_AZ)
	from SZINHAZ
	where SZ_H_CIM_HELYSEG like 'B_______';
go

select SZ_H_CIM_HELYSEG
	from SZINHAZ
	where left(SZ_H_CIM_HELYSEG,1)='B' and
		len(SZ_H_CIM_HELYSEG)=8;
go


/*
Izbrojati razlicite nazive gradova pozorista koji pocinju slovom B
*/



/*
Izbrojati razlicite nazive gradova pozorista koji pocinju slovom B,
a duzine su 5 (7)
*/

select * from dbo.SZINHAZ

/*
Listazzuk azokat a sorokat a szinhaz tablabol, amely
sorokban a kovetkezo lista elemei megtalalhatok
 (Szabadka, Beograd, Sombor, Budapest)
*/
select *
	from SZINHAZ
	where SZ_H_CIM_HELYSEG in
		 ('Szabadka', 'Beograd', 'Sombor', 'Budapest');
		go


/*
GROUP BY zaradek
*/

/*
Hany nyilvantartott szinhaz van az egyes helyisegekben
- koristiti tabelu pozoriste
*/
select SZ_H_CIM_HELYSEG, COUNT(SZINHAZ_AZ)
	from SZINHAZ
	group by SZ_H_CIM_HELYSEG;
go


/*	
A Vajdasagon kivuli varosokban hany szinhazat tartunk nyilvan
- koristiti tabelu pozoriste
*/
select SZ_H_CIM_HELYSEG, COUNT(SZINHAZ_AZ) as 'Szinhazak szama'
	from SZINHAZ
	where SZ_H_VAJDASAGI='false'
	group by SZ_H_CIM_HELYSEG;
go

/*
SELECT-ek a SzinhPortal adatbazisban 
3. ora - 10. het - 2016.12.07.

Harmadik csoport

*/


use SzinhPortal;
go

/*
Grupisanje je moguce sprovoditi i bez navodjenja osnove grupisanja
u Select klauzuli, ali odna ona u tabeli rezultata ne figurise
i tabela rezultata nece biti razumljiva, tj. za sta se odnose
rezultati agregacione funkcije
*/

select COUNT(SZINHAZ_AZ) as 'Szinhazak szama'
	from SZINHAZ
	where SZ_H_VAJDASAGI='false'
	group by SZ_H_CIM_HELYSEG;
go

	
select * from dbo.SZINHAZ;
go

/*	
Hany szinhaz van a Vajdasagon kivuli varosokban, es az egyes varosokban 
melyik a legkisebb es legnagyob iranyitoszam
- koristiti tabelu pozoriste
*/

insert dbo.SZINHAZ (SZINHAZ_AZ,HELYISEG_AZ,SZINHAZNEV,
		SZ_H_CIM_IRANYITOSZAM,SZ_H_CIM_HELYSEG, SZ_H_VAJDASAGI,
		SZ_H_AMATOR)
	values(4,8,'Madach',1023,'Budapest',0,0);
go

select SZ_H_CIM_HELYSEG, 
		COUNT(SZINHAZ_AZ) as 'Szinhazak szama',
		min(SZ_H_CIM_IRANYITOSZAM) as 'Legkisebb iranyitoszam',
		MAX(SZ_H_CIM_IRANYITOSZAM) as 'Legnagyobb iranyitoszam'
	from SZINHAZ
	where SZ_H_VAJDASAGI='false'
	group by SZ_H_CIM_HELYSEG;
go
	
/*	
Hany szinhaz van a nyilvantartasban, es  
melyik a legkisebb es legnagyob iranyitoszam
- koristiti tabelu pozoriste
*/

select COUNT(SZINHAZ_AZ) as 'Szinhazak szama',
		min(SZ_H_CIM_IRANYITOSZAM) as 'Legkisebb iranyitoszam',
		MAX(SZ_H_CIM_IRANYITOSZAM) as 'Legnagyobb iranyitoszam'
	from SZINHAZ;
go

--
--
-- HAVING zaradek
--
--

/*	
Hany szinhaz van a Vajdasagon kivuli varosokban, es az egyes varosokban 
melyik a legkisebb es legnagyob iranyitoszam.
Csak azok a sorok jelenjenek meg, amelyekben a varos neve 'Bu'-vel
kezdodok
- koristiti tabelu pozoriste
*/

select SZ_H_CIM_HELYSEG, 
		COUNT(SZINHAZ_AZ) as 'Szinhazak szama',
		min(SZ_H_CIM_IRANYITOSZAM) as 'Legkisebb iranyitoszam',
		MAX(SZ_H_CIM_IRANYITOSZAM) as 'Legnagyobb iranyitoszam'
	from SZINHAZ
	where SZ_H_VAJDASAGI='false'
	group by SZ_H_CIM_HELYSEG
	having SZ_H_CIM_HELYSEG like 'Bu%';
go

select SZ_H_CIM_HELYSEG, 
		COUNT(SZINHAZ_AZ) as 'Szinhazak szama',
		min(SZ_H_CIM_IRANYITOSZAM) as 'Legkisebb iranyitoszam',
		MAX(SZ_H_CIM_IRANYITOSZAM) as 'Legnagyobb iranyitoszam'
	from SZINHAZ
	where SZ_H_VAJDASAGI='false' and
			SZ_H_CIM_HELYSEG like 'Bu%'
	group by SZ_H_CIM_HELYSEG;
go

/*	

Hany szinhaz van a Vajdasagon kivuli varosokban, es az egyes varosokban 
melyik a legkisebb es legnagyob iranyitoszam.
Csak azok a sorok jelenjenek meg, amelyekben a megszamlalt szinhazak
szama nagyobb 1-nel
- koristiti tabelu pozoriste
*/	

select SZ_H_CIM_HELYSEG, 
		COUNT(SZINHAZ_AZ) as 'Szinhazak szama',
		min(SZ_H_CIM_IRANYITOSZAM) as 'Legkisebb iranyitoszam',
		MAX(SZ_H_CIM_IRANYITOSZAM) as 'Legnagyobb iranyitoszam'
	from SZINHAZ
	where SZ_H_VAJDASAGI='false'
	group by SZ_H_CIM_HELYSEG
	having COUNT(SZINHAZ_AZ)>1;
go

/*	
Hany szinhaz van a Vajdasagon kivuli varosokban, es az egyes varosokban 
melyik a legkisebb es legnagyob iranyitoszam.
Csak azok a sorok jelenjenek meg, amelyekben a legkisebb iranyitoszam
nagyobb 1050-nel
- koristiti tabelu pozoriste
*/	
select SZ_H_CIM_HELYSEG, 
		COUNT(SZINHAZ_AZ) as 'Szinhazak szama',
		min(SZ_H_CIM_IRANYITOSZAM) as 'Legkisebb iranyitoszam',
		MAX(SZ_H_CIM_IRANYITOSZAM) as 'Legnagyobb iranyitoszam'
	from SZINHAZ
	where SZ_H_VAJDASAGI='false'
	group by SZ_H_CIM_HELYSEG
	having min(SZ_H_CIM_IRANYITOSZAM)>1050;
go



/*	
Hany szinhaz van a Vajdasagon kivuli varosokban, es az egyes varosokban 
melyik a legkisebb es legnagyob iranyitoszam.
Csak azok a sorok jelenjenek meg, amelyekben a legkisebb iranyitoszam
megegyezik a legnagyobb iranyitoszammal
- koristiti tabelu pozoriste
*/

select SZ_H_CIM_HELYSEG, 
		COUNT(SZINHAZ_AZ) as 'Szinhazak szama',
		min(SZ_H_CIM_IRANYITOSZAM) as 'Legkisebb iranyitoszam',
		MAX(SZ_H_CIM_IRANYITOSZAM) as 'Legnagyobb iranyitoszam'
	from SZINHAZ
	where SZ_H_VAJDASAGI='false'
	group by SZ_H_CIM_HELYSEG
	having min(SZ_H_CIM_IRANYITOSZAM)=MAX(SZ_H_CIM_IRANYITOSZAM);
go	

--
--
-- where kontra having
--
--

/*
A where feltetel a heving-ben - NE RADI, NE MOZE SE PREMESTITI
Listazni a Vajdasagon kivuli helysegeket
*/	

select SZ_H_CIM_HELYSEG
	from dbo.SZINHAZ
	where SZ_H_VAJDASAGI='false';
go

select SZ_H_CIM_HELYSEG
	from dbo.SZINHAZ
	having SZ_H_VAJDASAGI='false';
go

/*
A having-feltetel athelyezese a where-be - NE RADI, NE MOZE SE PREMESTITI
*/

/*	
Listazzuk a helysegneveket a nyilvantartasbol,
amelyekre a legkisebb iranyitoszam megegyezik a legnagyobb
iranyitoszammal
- koristiti tabelu pozoriste
*/

select SZ_H_CIM_HELYSEG, MIN(SZ_H_CIM_IRANYITOSZAM),
		MAX(SZ_H_CIM_IRANYITOSZAM)
	from dbo.SZINHAZ
	group by SZ_H_CIM_HELYSEG
	having MIN(SZ_H_CIM_IRANYITOSZAM)=MAX(SZ_H_CIM_IRANYITOSZAM);
go

select SZ_H_CIM_HELYSEG 
	from dbo.SZINHAZ
	group by SZ_H_CIM_HELYSEG
	having MIN(SZ_H_CIM_IRANYITOSZAM)=MAX(SZ_H_CIM_IRANYITOSZAM);
go

select SZ_H_CIM_HELYSEG 
	from dbo.SZINHAZ
	where MIN(SZ_H_CIM_IRANYITOSZAM)=MAX(SZ_H_CIM_IRANYITOSZAM)
	group by SZ_H_CIM_HELYSEG;
go

select SZ_H_CIM_HELYSEG 
	from dbo.SZINHAZ
	where MIN(SZ_H_CIM_IRANYITOSZAM)=MAX(SZ_H_CIM_IRANYITOSZAM);
go

--
--
-- ORDER BY zaradek
--
--

/*
Listazzuk a varosokat forditott ABC-sorrendben
*/

select SZ_H_CIM_HELYSEG
	from dbo.SZINHAZ
	order by SZ_H_CIM_HELYSEG desc;
go

-- Listazzuk a varosokat forditott ABC-sorrendben
-- es novekvo iranyitoszamnak megfelelo sorrendbe

select SZ_H_CIM_HELYSEG, SZ_H_CIM_IRANYITOSZAM
	from dbo.SZINHAZ
	order by SZ_H_CIM_HELYSEG desc, SZ_H_CIM_IRANYITOSZAM;
go



select distinct SZ_H_CIM_HELYSEG
	from dbo.SZINHAZ
	order by SZ_H_CIM_HELYSEG desc;
go

select distinct SZ_H_CIM_HELYSEG
	from dbo.SZINHAZ
	order by SZ_H_CIM_IRANYITOSZAM desc;
go

select distinct SZ_H_CIM_HELYSEG, SZ_H_CIM_IRANYITOSZAM
	from dbo.SZINHAZ
	order by SZ_H_CIM_IRANYITOSZAM desc;
go



/*
SELECT-ek a SzinhPortal adatbazisban 
4. ora - 11. het - 2016.12.14.

Harmadik csoport

*/


use SzinhPortal;
go


/*Jelentessuk meg az aktualis datumot es idot  */

SELECT
substring(cast(CURRENT_TIMESTAMP as character), 1, 11) AS "Date",
substring(cast(CURRENT_TIMESTAMP as character), 12,8) AS "Time",
CURRENT_TIMESTAMP AS "Timestamp"
go


SELECT
substring(cast(GETDATE() as character), 1, 11) AS "Date",
substring(cast(GETDATE() as character), 12,8) AS "Time",
GETDATE() AS "GetDate";
go


SELECT
substring(cast(Sysdatetime() as character), 1, 11) AS "Date",
substring(cast(Sysdatetime() as character), 12,8) AS "Time",
Sysdatetime() AS "Sysdatetime";
go


/*
-- DATEADD()
If you want to add or subtract an amount of time to a column or a variable, then display a new value
in a rowset or set a variable with that new value, DATEADD() will do this. The syntax for DATEADD() is
DATEADD(datepart, number, date)
The datepart option applies to all of the date functions and details what you want to add from
milliseconds to years. These are defined as reserved words and therefore are not surrounded by
quotation marks. There are a number of possible values, as detailed in Table 11-1.
Taking the second option of the datepart function, to add the value, make the number positive,
and to subtract a number, make it negative. Moving to the final option of the datepart function, this
can be either a value, a variable, or a column date type holding the date and time you wish to change.
Table 11-1. Potential Values for datepart
datepart Definition Meaning
isowk, isoww ISOWeek is a numbering system used to give every week in the calendar
a unique, ascending number. An ISO week starts on a Monday, and
Week 1 is the week containing the first Thursday of that year. For example,
in 2008, the first Thursday occurred on January 3, so Week 1 ran from
December 31, 2007, through January 6, 2008.
tz Timezone offset
ns Nanosecond
mcs Microsecond
ms Millisecond
ss, s Second
mi, n Minute
hh Hour
dw, w Weekday
wk, ww Week
dd, d Day
dy, y Day of year
mm, n Month
qq, q Quarter
yy, yyyy Year
*/

-- Timestamp/idobelyeg es az 50 ora mulva bekovetkezo timestamp
select GETDATE(), DATEADD(hh, 50, getdate()) as 'Timestamp za 50 casova';
go

-- Timestamp/idobelyeg es az 50 oraval ezelotti idobelyeg
select GETDATE() as 'Trenutni Timestamp',
		 DATEADD(hh, -50, getdate()) as 'Timestamp pre 50 casova';
go


/*

-- DATEDIFF()
To find the difference between two dates, you would use the function DATEDIFF(). The syntax for this
function is
DATEDIFF(datepart, startdate, enddate)
The first option contains the same options as for DATEADD(), and startdate and enddate are the
two days you wish to compare. A negative number shows that the enddate is before the startdate.
*/

-- Timestamp/idobelyeg, az 50 ora mulva bekovetkezo timestamp
--    es a kulonbseg heteben kifejezve

select GETDATE() as 'Trenutni Timestamp',
	   DATEADD(DD, 50, getdate()) as 'Timestamp za 50 dana',
	   DATEDIFF(WW, getdate(), DATEADD(DD, 50, getdate())) as 'Razlika u nedeljama';
go

/*
-- DATEPART()
If you wish to achieve returning part of a date from a date variable, column, or value, you can use
DATEPART() within a SELECT statement.
As you may be expecting by now, the syntax has datepart as the first option, and then the
datetoinspect as the second option, which returns the numerical day of the week from the date
inspected.
DATEPART(datepart, datetoinspect)
1. We need to set only one local variable to a date and time. After that, we find the day of the month.
DECLARE @WhatsTheDay datetime
SET @WhatsTheDay = '24 March 2008 3:00 PM'
SELECT DATEPART(dd, @WhatsTheDay)
Figure 11-24 shows the results after executing this code.
Figure 11-24. Finding part of a date
2. To produce a more pleasing date and time for a statement, we can combine DATEPART() and DATENAME() to
have a meaningful output. The function CAST(), which we will look at in detail shortly, is needed here, as it is a
data type conversion function.
DECLARE @WhatsTheDay datetime
SET @WhatsTheDay = '24 March 2008 3:00 PM'
SELECT DATENAME(dw, @WhatsTheDay) + ', ' +
CAST(DATEPART(dd,@WhatsTheDay) AS varchar(2)) + ' ' +
DATENAME(mm,@WhatsTheDay) + ' ' +
CAST(DATEPART(yyyy,@WhatsTheDay) AS char(4))
3. When this is executed, it will produce the more meaningful date shown in Figure 11-25.
Figure 11-25. Finding and concatenating to provide a useful date
*/

-- Az idobelyeg, melyik napja a hetnek, a het napjanak neve
-- Az idobelyeg 50 nap mulva, melyik napja a hetnek, a het napjanak neve

select GETDATE() as 'Trenutni Timestamp',
	   datepart(DW, GETDATE())-1 as 'Redni broj dana u nedelji',
	   DATENAME(dw, GETDATE()) as 'Naziv dana',
		DATEADD(DD, 50, getdate()) as 'Timestamp za 50 dana', 
		datepart(DW, DATEADD(DD, 50, getdate())) as 'Redni br. dana iz Timestampa+50',
		DATENAME(dw, DATEADD(DD, 50, getdate())) as 'Naziv dana za Timestampa+50',
		DATEDIFF(WW, getdate(), DATEADD(DD, 50, getdate())) as 'Razlika u nedeljama';
go

-- ISDATE()
Although ISDATE() is a function that works with dates and times, this system function takes a value
in a column or a variable and confirms whether it contains a valid date or time. The value returned
is 0, or false, for an invalid date, or 1 for true if the date is okay. The formatting of the date for testing within
the ISDATE() function has to be in the same regional format as you have set with SET DATEFORMAT or SET
LANGUAGE. If you are testing in a European format but have your database set to US format, then you
will get a false value returned.

-- 1. The first example demonstrates where a date is invalid. There are only 30 days in September.
DECLARE @IsDate char(15)
SET @IsDate = '31 Sep 2008'
SELECT ISDATE(@IsDate)    - FALSE
*/

select ISDATE('2001-02-29')
go

select GETDATE(),ISDATE(GETDATE())
go

-- Az idobelyeg evenek kiirasa (datepart year)
select DATEPART(yy,getdate()) as 'Rezultat za godinu pom. datepart-a',
		year(GETDATE()) as 'Rezultat za godinu pom. year-a';
go


-- Az idobelyeg honapjanak kiirasa (datepart month)
select DATEPART(mm,getdate()) as 'Rezultat za mesev pom. datepart-a',
		month(GETDATE()) as 'Rezultat za mesec pom. month-a';
go


-- Az idobelyeg napjanak kiirasa (datepart day)
select DATEPART(dd,getdate()) as 'Rezultat za dan pom. datepart-a',
		day(GETDATE()) as 'Rezultat za dan pom. month-a';
go

/* A getdate() erteke es az ertek hossza */

select GETDATE(), len(GETDATE())
go


/*

Tobbtablas lekerdezesek

*/

/* Hany szinhaz van helyisegnevenkent? */
-- egytablas lekerdezes
select SZ_H_CIM_HELYSEG, COUNT(SZINHAZ_AZ)
	from dbo.SZINHAZ
	group by SZ_H_CIM_HELYSEG;
go

--kettablas lekerdezes-Descartes szorzat
select HELYISEGNEV, COUNT(SZINHAZ_AZ)
	from dbo.SZINHAZ sz, dbo.HELYISEG h
	where sz.HELYISEG_AZ=h.HELYISEG_AZ
	group by HELYISEGNEV;
	go
	
--kettablas lekerdezes-JOIN
select HELYISEGNEV, COUNT(SZINHAZ_AZ)
	from dbo.SZINHAZ sz
	join dbo.HELYISEG h on h.HELYISEG_AZ=sz.HELYISEG_AZ
	group by HELYISEGNEV;
	go

/* Hany szinhaz van helyisegnevenkent? 
	Csak azok a sorok maradjanak meg, amelyekben a szinhazak szama
	nagyobb egynel */


select HELYISEGNEV, COUNT(SZINHAZ_AZ)
	from dbo.SZINHAZ sz
	join dbo.HELYISEG h on h.HELYISEG_AZ=sz.HELYISEG_AZ
	group by HELYISEGNEV
	having COUNT(SZINHAZ_AZ)>1;
	go


select HELYISEGNEV, COUNT(SZINHAZ_AZ)
	from dbo.SZINHAZ sz, dbo.HELYISEG h
	where sz.HELYISEG_AZ=h.HELYISEG_AZ
	group by HELYISEGNEV
	having COUNT(SZINHAZ_AZ)>1;
	go

/* Hany szinhaz mukodik Bdapesten? */
select HELYISEGNEV, COUNT(SZINHAZ_AZ)
	from dbo.SZINHAZ sz, dbo.HELYISEG h
	where sz.HELYISEG_AZ=h.HELYISEG_AZ and HELYISEGNEV='BudaPEST'
	group by HELYISEGNEV;
	go
	
	
	select HELYISEGNEV, COUNT(SZINHAZ_AZ)
	from dbo.SZINHAZ sz, dbo.HELYISEG h
	where sz.HELYISEG_AZ=h.HELYISEG_AZ
	group by HELYISEGNEV
	having HELYISEGNEV='BudaPEST';
	go
	
select COUNT(SZINHAZ_AZ) as 'A szinhazak szama Budapesten'
	from dbo.SZINHAZ sz, dbo.HELYISEG h
	where sz.HELYISEG_AZ=h.HELYISEG_AZ and HELYISEGNEV='BudaPEST';
	go



-- Listazni az Ujvidek vonzaskorebe tartozo szemelyeket (vezetek- es
--	keresztnev, akik nem aktivak -- aktivak


select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY sz, dbo.HELYISEG h
	where sz.HELYISEG_AZ=h.HELYISEG_AZ
			 and (H_IRANYITOSZAM>=21000 and H_IRANYITOSZAM<22000)
			and SZE_AKTIV=1;
go

select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY sz
	where SZE_AKTIV=1
		and HELYISEG_AZ in (select HELYISEG_AZ
							from dbo.HELYISEG
							where H_IRANYITOSZAM>=21000 and H_IRANYITOSZAM<22000);
go


-- Listazni az Ujvidek vonzaskorebe tartozo szemelyeket (vezetek- es
--	keresztnev, akik aktivak es profik a szinhazszakmaban

select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY sz, dbo.HELYISEG h
	where sz.HELYISEG_AZ=h.HELYISEG_AZ
			 and (H_IRANYITOSZAM>=21000 and H_IRANYITOSZAM<22000)
			and SZE_AKTIV=1 and SZE_AMATOR=0;
go

select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY sz
	where SZE_AKTIV=1 and SZE_AMATOR=0
		and HELYISEG_AZ in (select HELYISEG_AZ
							from dbo.HELYISEG
							where H_IRANYITOSZAM>=21000 and H_IRANYITOSZAM<22000);
go

-- Listazni az Ujvidek vonzaskorebe tartozo szemelyeket (vezetek- es
--	keresztnev, akik aktivak es profik a szinhazszakmaban, valamint a 
-- nevuk 'G' betuvel kezdodik


select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY sz, dbo.HELYISEG h
	where sz.HELYISEG_AZ=h.HELYISEG_AZ
			 and (H_IRANYITOSZAM>=21000 and H_IRANYITOSZAM<22000)
			and SZE_AKTIV=1 and SZE_AMATOR=0 and
			substring(SZE_NEV, 1,1)='G';
go

select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY sz
	where SZE_AKTIV=1 and SZE_AMATOR=0 and
			substring(SZE_NEV, 1,1)='G'
		and HELYISEG_AZ in (select HELYISEG_AZ
							from dbo.HELYISEG
							where H_IRANYITOSZAM>=21000 and H_IRANYITOSZAM<22000);
go


-- sledece resenje ne daje dobar rezultat 
select L_IME, L_PREZIME
	from dbo.LICE l, dbo.MESTO m
	where l.SIF_MESTA=m.SIF_MESTA and NAZIV_MESTA='Novi Sad'
			and L_AKTIVNO=1 and L_AMATER=0 and L_IME='A';
go


-- Listazzuk a budapesti es ujvideki szemelyeket(vezetek- es
--	keresztnev), akik aktivak es profik a szinhazszakmaban, valamint az 
-- eletrajzuk hosszabb 500 betunel

select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY sz, dbo.HELYISEG h
	where sz.HELYISEG_AZ=h.HELYISEG_AZ
			 and (HELYISEGNEV='Budapest' or HELYISEGNEV='Ujvidek')
			and SZE_AKTIV=1 and SZE_AMATOR=0 and
			len(SZE_ELETRAJZ)>500;
go

select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY sz
	where SZE_AKTIV=1 and SZE_AMATOR=0 and
			len(SZE_ELETRAJZ)>500
		and HELYISEG_AZ in (select HELYISEG_AZ
						from dbo.HELYISEG
						where HELYISEGNEV='Budapest' or HELYISEGNEV='Ujvidek');
go


/*
SELECT-ek a SzinhPortal adatbazisban 
5. ora - 11. het - 2016.12.21.

Harmadik csoport

*/

--Listazzuk  nev szerint azokat a szemelyeket, akik Szerbiaban
--tartozkodnak

--Ad.1
select  SZE_VEZETEKNEV, SZE_NEV
	from dbo.HELYISEG h, dbo.ORSZAG o, dbo.SZEMELY sz
	where o.ORSZAG_AZ=h.ORSZAG_AZ and
			h.HELYISEG_AZ=sz.HELYISEG_AZ and
			ORSZAGNEV='Szerbia';
go

--Ad.1/1
select  SZE_VEZETEKNEV, SZE_NEV
	from dbo.HELYISEG h
	join dbo.ORSZAG o on o.ORSZAG_AZ=h.ORSZAG_AZ
	join dbo.SZEMELY sz on sz.HELYISEG_AZ=h.HELYISEG_AZ
	where ORSZAGNEV='Szerbia';
go

--Ad.1/1-rossz
select SZE_VEZETEKNEV, SZE_NEV
	from dbo.ORSZAG o
	join dbo.SZEMELY sz on sz.SZEMELY_AZ=o.ORSZAG_AZ
	join dbo.HELYISEG h on h.HELYISEG_AZ=sz.HELYISEG_AZ
	where ORSZAGNEV='Szerbia';
go

Ad.2

select 	SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY
	where HELYISEG_AZ in (select HELYISEG_AZ
							from dbo.HELYISEG
							where ORSZAG_AZ=(select ORSZAG_AZ
												from dbo.ORSZAG
												where ORSZAGNEV='Szerbia'));
go	

--Ad.3

select 	SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY
	where HELYISEG_AZ in (select HELYISEG_AZ
							from dbo.HELYISEG h
							join dbo.ORSZAG o on o.ORSZAG_AZ=h.ORSZAG_AZ
							where ORSZAGNEV='Szerbia');
go
	
--Ad.4

select 	SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY sz
	join dbo.HELYISEG h on h.HELYISEG_AZ=sz.HELYISEG_AZ
	where ORSZAG_AZ=(select ORSZAG_AZ
						from dbo.ORSZAG
						where ORSZAGNEV='Szerbia');
go		

/*
Listazzuk a szerbiai szemelyek neveit es tartozkodasi helyuket */
--Ad.1/1
select SZE_VEZETEKNEV, SZE_NEV, HELYISEGNEV
	from dbo.SZEMELY sz, dbo.HELYISEG h, dbo.ORSZAG o
	where sz.HELYISEG_AZ=h.HELYISEG_AZ and
			h.ORSZAG_AZ=o.ORSZAG_AZ and
			ORSZAGNEV='SzErBiA';
go

--Ad.1/2

select SZE_VEZETEKNEV, SZE_NEV, HELYISEGNEV
	from dbo.SZEMELY sz
	join dbo.HELYISEG h on h.HELYISEG_AZ=sz.HELYISEG_AZ
	join dbo.ORSZAG o on o.ORSZAG_AZ=h.ORSZAG_AZ
	where ORSZAGNEV='SzErBiA';
go

--Ad.2

select SZE_VEZETEKNEV, SZE_NEV, HELYISEGNEV
	from dbo.SZEMELY sz
	join dbo.HELYISEG h on h.HELYISEG_AZ=sz.HELYISEG_AZ
	where ORSZAG_AZ = (select ORSZAG_AZ
						from dbo.ORSZAG 
						where ORSZAGNEV='SzErBiA');
go

/*Listazzuk a szerbiai szemelyek neveit, tartozkodasi helyuket es
 az orszagnevet is */

select SZE_VEZETEKNEV, SZE_NEV, HELYISEGNEV, ORSZAGNEV
	from dbo.SZEMELY sz
	join dbo.HELYISEG h on h.HELYISEG_AZ=sz.HELYISEG_AZ
	join dbo.ORSZAG o on o.ORSZAG_AZ=h.ORSZAG_AZ
	where ORSZAGNEV='SzErBiA';
go

/* Kik azok a szemelyek, akik tobbszor is megjelennek szerzokent?*/

select SZEMELY_AZ, COUNT(SZEMELY_AZ)
	from dbo.SZERZO
	group by SZEMELY_AZ
	having COUNT(SZEMELY_AZ)>1;
go

select SZEMELY_AZ, COUNT(SZEMELY_AZ)
	from dbo.SZERZO
	group by SZEMELY_AZ;
go


/* Nev szerint kik azok a szemelyek, akik tobbszor is megjelennek szerzokent?*/

select s.SZEMELY_AZ, SZE_VEZETEKNEV, SZE_NEV, COUNT(s.SZEMELY_AZ)
	from dbo.SZERZO s
	join dbo.SZEMELY sz on sz.SZEMELY_AZ=s.SZEMELY_AZ
	group by s.SZEMELY_AZ, SZE_VEZETEKNEV, SZE_NEV
	having COUNT(s.SZEMELY_AZ)>1;
go

-- Kik azok a szemelyek akik nem szerzokent vannak nyilvantartva?
-- Al-SELECT
select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY
	where SZEMELY_AZ not in (select SZEMELY_AZ
								from dbo.SZERZO);
go

--Left outer join

select SZE_VEZETEKNEV, SZE_NEV, SZINDARAB_AZ
	from dbo.SZEMELY sz
	left join dbo.SZERZO szer on szer.SZEMELY_AZ=sz.SZEMELY_AZ
	where szer.SZEMELY_AZ is null;
go

select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZEMELY sz
	left join dbo.SZERZO szer on szer.SZEMELY_AZ=sz.SZEMELY_AZ
	where szer.SZEMELY_AZ is null;
go


-- Right outer join
select SZE_VEZETEKNEV, SZE_NEV
	from dbo.SZERZO szer
	right join dbo.SZEMELY sz on szer.SZEMELY_AZ=sz.SZEMELY_AZ
	where szer.SZEMELY_AZ is null;
go

/*
SELECT-ek a SzinhPortal adatbazisban 
6. ora - 12. het - 2017.01.11.

Harmadik csoport

*/







/*
Ugradjeni SELECT u HAVING-u
*/







/*
Ugradjeni select u FROM klauzuli
*/


/* !!!!! - pocetak
Koliko ima upisanih gradova pozorista koji pocinju slovom B,
a duzina im je 7 - ugradjenim SELECTOM u FROM
*/

-- Obicno resenje

select COUNT(P_MESTO)
	from dbo.POZORISTE
	where left(P_MESTO,1)='B' and LEN(P_MESTO)=7;
go

-- Resenje ugradjenim SELECT-om

select COUNT(mestasapocslovomBduzine7)
	from (select P_MESTO as mestasapocslovomBduzine7
			from dbo.POZORISTE
			where left(P_MESTO,1)='B' and LEN(P_MESTO)=7) as A;
go

/* !!!!! - kraj
Koliko ima upisanih gradova pozorista koji pocinju slovom B,
a duzina im je 7 - ugradjenim SELECTOM u FROM
*/



/* !!!!! - pocetak
Koliki je prosecan broj pozorista u gradovima
 - ugradjenim SELECTOM u FROM
*/
select * from POZORISTE;
go

select SUM(SIF_POZORISTA)
	from dbo.POZORISTE;
go

select convert(numeric(5,2), AVG(SIF_POZORISTA))
	from dbo.POZORISTE;
go

select P_MESTO, COUNT(SIF_POZORISTA) as brpozugradu
				from dbo.POZORISTE
				group by P_MESTO;
go

select count(upmesto) as "Uk.br.mesta",
		sum(brpozugradu) as "Uk.br.pozorista",
		sum(brpozugradu)/count(upmesto) as
			"Uk.br.pozorista / Uk.br.mesta",
		convert(numeric(5,2), AVG(brpozugradu)) as
			"Convert N2 - AVG broj pozorista"
	from (select P_MESTO as upmesto, 
			convert(numeric(5,2),COUNT(SIF_POZORISTA)) as brpozugradu
				from dbo.POZORISTE
				group by P_MESTO) as A;
go

select count(upmesto) as "Uk.br.mesta",
		sum(brpozugradu) as "Uk.br.pozorista",
		sum(brpozugradu)/count(upmesto) as
			"Uk.br.pozorista / Uk.br.mesta",
		AVG(brpozugradu) as "AVG broj pozorista"
	from (select P_MESTO as upmesto, 
			convert(numeric(5,2),COUNT(SIF_POZORISTA)) as brpozugradu
				from dbo.POZORISTE
				group by P_MESTO) as A;
go

--konacno:

select AVG(brpozugradu) as "Prosecan broj pozorista u gradovima"
	from (select P_MESTO as upmesto, 
			convert(numeric(5,2),COUNT(SIF_POZORISTA)) as brpozugradu
				from dbo.POZORISTE
				group by P_MESTO) as A;
go

-- ili:

select convert(numeric(5,2), AVG(brpozugradu))
			 as "Prosecan broj pozorista u gradovima"
	from (select P_MESTO as upmesto, 
			convert(numeric(5,2),COUNT(SIF_POZORISTA)) as brpozugradu
				from dbo.POZORISTE
				group by P_MESTO) as A;
go

-- ali nikako:

select AVG(brpozugradu) as "Prosecan broj pozorista u gradovima"
	from (select P_MESTO as upmesto, 
			count(SIF_POZORISTA) as brpozugradu
				from dbo.POZORISTE
				group by P_MESTO) as A;
go


/* !!!!! - kraj
Koliki je prosecan broj pozorista u gradovima
 - ugradjenim SELECTOM u FROM
*/