Технологиялары



Pdf көрінісі
бет32/57
Дата28.07.2023
өлшемі2,79 Mb.
#104886
1   ...   28   29   30   31   32   33   34   35   ...   57
 
Өрнектерді пайдалану 
Сұраныс 3. 1500-ден аспайтын жалақының әрбір мәні үшін бұл мән мен 
оқытушылардың санын, осындай жалақы алатындарды шығару. 
SELECT Salary + Rise, C0UNT(*) 
FROM TEACHER 
WHERE Salary + Rise <= 1500 GROUP BY Salary + Rise; 
Сұраныс 4. Бір лауазым атқаратын оқытушылардың әрбір тобы үшін ең 
төменгі және ең жоғары ставкалар арасындағы орташа мәнді, сондай-ақ орташа 
ставкалар арасындағы ең төменгі және ең жоғарғы мәндерді шығару. 
SELECT AVG(MIN(Salary)) AS AVG_MIN,
AVG(MAX(Salary)) AS AVG_MAX,
MIN(AVG(Salary)) AS MIN_AVG, 
MAX(AVG(Salary)) AS MAX_AVG
FROM TEACHER 
GROUP BY Dolgnost ; 
Алынған топтардың арасында жолдарды іріктеу үшін HAVING сөзін 
қолданған жөн. Ол бастапқы кестелерге арналған WHERE фразасы сияқты 
топтар үшін бірдей рөл атқарады және тек GROUP BY фразасы болғанда ғана 
пайдаланылуы мүмкін. 
SELECT сөйлемінде WHERE, GROUP BY және HAVING сөз тіркестері 
келесі тәртіпте өңделеді. 
WHERE
фразасы көрсетілген шартты қанағаттандыратын жолдарды таңдайды. 
GROUP BY
фраза таңдалған жолдарды топтайды. 
HAVING
фразасы онда көрсетілген шартты қанағаттандыратын топтар 
іріктеледі. 
Жоғарыда айтылғандарға байланысты, алдыңғы сұраныс салуды осылай 
жазу қажет. Онда сұранысты осылай жазамыз:
Сұраныс 5. Жұмыс істейтін профессорлардың жиынтық саны 1-ден асатын 
кафедралардың нөмірлерін шығару. 
SELECT KOD_kafedru as "Кафедра номерлері" ,Count(*) as "Кафедрадағы 
профессорлар саны"
FROM TEACHER
WHERE dolgnost='профессор'


85 
GROUP BY KOD_kafedru 
having count(dolgnost) > 1 
HAVING фразасында бағандарды қолдана топтастыру. 
Сұраныс 6. Бір немесе одан да көп профессорлар жұмыс істейтін 
математика және информатика факультеті кафедраларының атауларын шығару. 
Сондай-ақ профессорлардың санын және олардың жиынтық жалақысын 
көрсету. 
SELECT d.Name_kafedru, Count(*), SUM(t.salary + t.Rise) 
FROM FACULTET f, KAFEDRA d, TEACHER t
WHERE f.KOD_FACULTETA = d.KOD_FACULTETA AND 
d.KOD_kafedru = t.KOD_kafedru AND 
LOWER(f.Name_faculteta) = 'математиктер және информатиктер' AND
LOWER(t.Dolgnost ) = 'профессор'
GROUP BY d.Name_kafedru
HAVING COUNT(*) > 0; 
GROUP BY фразасынсыз HAVING фразасы 
Бұл жағдайда SELECT сөз тіркестері тізімінде олармен тек 
константаларды, агрегаттық функциялар мен өрнектерді ғана пайдалануға 
болады. 
Сұраныс 7. Егер барлық оқытушылардың жиынтық жалақысы 15 000-нан 
асса, олардың ең төменгі мөлшерлемесін, ең жоғарғы үстемесін және жиынтық 
жалақысын шығарыңыз.
SELECT MIN(Salary), MAX(Rise), SUM(Salary + Rise)
FROM TEACHER
HAVING SUM(Salary + Rise) > 15000; 
WHERE фразасы бар болса, алдымен оның шартына сәйкес жолдарды 
іріктеу жүргізіледі, содан кейін ғана HAVING фразасының шарты 
қолданылады. 
Сұраныс 8. Егер барлық ассистенттердің жиынтық жалақысы 2500-ден 
асса, олардың орташа ставкасын, орташа үстемесін және жиынтық жалақысын 
шығарсын. 
SELECT AVG(Salary), AVG(Rise), SUM(Salary + Rise)
FROM TEACHER 
WHERE LOWER(Dolgnost ) = 'ассистент'
HAVING SUM(Salary + Rise) > 2500;
Қорытынды жолдарды сұрыптау 
Біз атап өткендей, Мәліметтер қорының кестелеріндегі жолдар ретсіз. 
Сондай-ақ, сұраныстың қорытынды кестесінің жолдары реттелмеген, бірақ 
оларды SELECT сөйлемінде реттеу үшін ORDER BY фразасын пайдалануға 


86 
болады. Ол онда көрсетілген бағандардың (және бағандардың үстіндегі 
өрнектердің) мәні бойынша қорытынды сұраныс кестесі жолдарын 
сұрыптайды. 
Бұл фразаның синтаксисі келесі: 


Достарыңызбен бөлісу:
1   ...   28   29   30   31   32   33   34   35   ...   57




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет