4. Топтау арқылы сұраныс жасауға шектеулер келтір.
5. Топтарды сұрыптау шарттарына шектеулер келтір. Топтарды сұрыптау шарттарда
NULL мəнін өңдеу ережелері.
Тапсырмалар:
1. Статистикалық функцияларды қолдану.
2. Топтау арқылы сұраныс жасау.
3. HAVING инструкциясы
Сатылымның жалпы жоспарлы жəне нақты жалпы көлемі қандай?
SELECT SUM(план), SUM(продажа)
FROM ПРОДАВЦЫ
«КОЛЕСО» (8103 идентификаторы) сатып алушымен жасалған тапсырыстың орташа
бағасын есептеу:
SELECT AVG(стоимость)
FROM ЗАКАЗЫ
WHERE покупатель=8103
Деректер қорындағы ең алғашқы тапсырыс қашан жасалған?
SELECT MIN (дата_заказа)
FROM ЗАКАЗЫ
Біздің деректер қорымызда қызметтер түрінің саны қанша?
SELECT COUNT(DISTINCT должность)
FROM ПРОДАВЦЫ
Əрбір дүкенде қанша сатушы жұмыс істейді?
SELECT магазин, COUNT(*)
FROM ПРОДАВЦЫ
GROUP BY магазин
Əрбір сатушыға əрбір сатып алушы бойынша тапсырыстың жалпы санын есептеу:
SELECT продавец, покупатель, SUM(стоимость)
FROM ЗАКАЗЫ
GROUP BY продавец, покупатель
Сатушылар жəне сатып алушылар бойынша алғашқы сұраныс нəтижесін сұрыптау:
SELECT продавец, покупатель, SUM(стоимость)
FROM ЗАКАЗЫ
GROUP BY продавец, покупатель
ORDER BY продавец, покупатель
HAVING инструкциясы жол топтарына сұрыптау шартын анықтайды. HAVING
ұсынысында WHERE ұсынысындағы сұрыптау шарты көрсетіледі.
Тапсырыстардың жалпы бағасы 30000 асатын əрбір сатушы үшін тапсырыстың
орташа бағасы қандай?
SELECT продавец, AVG(стоимость)
FROM ЗАКАЗЫ
GROUP BY продавец
HAVING SUM(стоимость)>30000
Тапсырмаларды орындауға қажетті əдістемелік нұсқаулар:
Оқулық материалды жəне түсіну кезінде негізгі түсініктемелерді ұғу жəне материалды
бекіту арқылы жүргізілу керек. Тақырып бойынша терминдердің сөздігін құрастыр.
6 Бағыныңқы сұраныстар
Сұрақтар:
1. Бағыныңқы сұранысқа неге ORDER BY cөйлемі жатпайды?
2. Егер нəтижелік бағандарда бірде бір жол болмаса немесе нəтижелік баған NULL мəнін
қабылдаса, ANY тексерісі бағыныңқы сұраныста қандай мəнді қайтарады?
3. Корреляциялық бағыныңқы сұраныс дегеніміз не?
Тапсырмалар:
1. WHERE ұсынысындағы бағыныңқы сұраныстар
2. Бағыныңқы сұраныстағы таңдау шарттары
Берілген ұсыныста ішкі сұраныс болса, ол жолдарды таңдау процесіне қатысады.
Келесі сұраныстарды қарастырайық:
Жоспарлы сатудың көлемі барлық сатушылардың сатуының жоспарлы көлемінің
сомасынан артық дүкендер тізімін шығару:
SELECT город
FROM МАГАЗИНЫ
WHERE план_объем >(SELECT SUM(план)
FROM ПРОДАВЦЫ
WHERE магазин=номер_магазина)
Бағыныңқы сұраныстағы таңдау шарттары:
3. Бағыныңқы сұраныс нəтижесімен салыстыру. Өрнектің мəні бағыныңқы сұраныспен
қайтарылатын бір мəнмен салыстырылады. Бұл тексеріс жай салыстыруды еске салады.
4. Бағыныңқы сұраныс нəтижесіне жататын тексеріс. Өрнек мəнінің бағыныңқы
сұраныспен қайтарылатын мəндер жиынының біреуіне тең болатындығы тексеріледі.
Бұл тексеріс жиынға тиістілікті тексеруді еске салады.
5. Бар болуына тексеріс. Бағыныңқы сұраныс нəтижелер кестесіндегі жолдардың бар
болуы тексеріледі.
6. Көп ретті салыстырулар. Бағыныңқы сұраныспен қайтарылатын көптеген мəндер
жиынының əрқайсысымен өрнектің мəні салыстырылады [1, б. 205].
Салыстыру операциясында алты салыстыру операторларын (=, <>, <, <=, >, >=),
бағыныңқы сұраныс нəтижесімен қарапайым салыстырулар сияқты қолдануға болады.
Салыстыруға қатысатын бағыныңқы сұраныс нəтиже ретінде жалғыз мəнді қайтару керек, яғни
бір бағаннан тұратын бір жолды қайтару. Егер бағыныңқы сұраныс нəтижесі бірнеше жол
немесе бірнеше баған болса, онда салыстырудың мағынасы жоқ жəне ДҚБЖ қате жайлы дерек
шығарады. Егер бағыныңқы сұраныстың орындалу нəтижесінде бір де бір жол алынбаса немесе
NULL мəні алынса, онда салыстыру операциясы NULL-ді қайтарады.
Көкшетауда орналасқан дүкендердің сатудың жоспарлы көлеміне сатушының жоспарлы
көлемі тең немесе жоғары сатушылардың тізімін шығару:
SELECT фамилия
FROM ПРОДАВЦЫ
WHERE план >=(SELECT план_объем
FROM МАГАЗИНЫ
WHERE город='Кокшетау')
Сатушы Дошаковтың қызмет көрсететін сатып алушыларының тізімін шығару:
SELECT название
FROM ПОКУПАТЕЛИ
WHERE продал =(SELECT номер_продавца
FROM ПРОДАВЦЫ
WHERE фамилия='Дошаков')
Бағыныңқы сұраныс нəтижесіне (IN предикаты) жататын тексеріс бір мəнімен деректер
бағанын салыстырады, жəне егер осы мəн бағандар элементтерінің біріне тең болса, онда
тексеріс TRUE нəтижесін береді. Бұл тексеріс тексерілетін жолдың мəндерімен бағыныңқы
сұраныспен іріктелген мəндер жиынын салыстыруға қолданылады.
Нақты сату көлемі жоспарлыдан асатын дүкендердің сатушыларының тізімін шығару:
SELECT фамилия
FROM ПРОДАВЦЫ
WHERE магазин IN (SELECT номер_магазина
FROM МАГАЗИНЫ
WHERE продажа_объем>план_объем)
Тапсырмаларды орындауға қажетті əдістемелік нұсқаулар:
Оқулық материалды жəне түсіну кезінде негізгі түсініктемелерді ұғу жəне материалды
бекіту арқылы жүргізілу керек. Тақырып бойынша терминдердің сөздігін құрастыр.
7 Көп еселі салыстыру
Сұрақтар:
1. Бағыныңқы сұраныс дегеніміз не?
2. ANY тексерісі?
3. ALL тексерісі?
Тапсырмалар:
1. ANY предикаты
2. ALL предикаты
3. Сұраныстардың енгізілу деңгейлері
ANY тексерісінде ішкі сұраныспен таңдалған тексерілетін мəнді деректер бағанымен
салыстыру үшін (=, <>, <, <=, >, >=) салыстыру операторларының біреуі қолданылады.
Тексерілетін мəн кезекпен бағандағы əрбір элементпен салыстырылады. Егер осы
салыстырулардың кез-келгені TRUE нəтижесін берсе, онда ANY тексерісі TRUE мəнін
қайтарады.
Өз жоспарынан 10 пайыздан аса сомаға тапсырыс алған сатушылар тізімін шығару:
SELECT фамилия
FROM ПРОДАВЦЫ
WHERE (0.1*план < ANY (SELECT стоимость
FROM ЗАКАЗЫ
WHERE продавец=номер_продавца))
ANSI/ISO стандартына сəйкес ANY предикатының орнына SOME предикатын қолдануға
болады.
SELECT фамилия
FROM ПРОДАВЦЫ
WHERE (0.1*план < SOME (SELECT стоимость
FROM ЗАКАЗЫ
WHERE продавец=номер_продавца))
Дүкендерді басқармайтын барлық сатушылар фамилияларын шығару:
SELECT фамилия
Достарыңызбен бөлісу: |