/* 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 */