Тапсырмаларды орындауға қажетті әдістемелік нұсқаулар:
Оқулық материалды және түсіну кезінде негізгі түсініктемелерді ұғу және материалды бекіту арқылы жүргізілу керек. Тақырып бойынша терминдердің сөздігін құрастыр.
Негізгі әдебиеттер: 1-5
Қосымша әдебиеттер: 6-17
7 Көп еселі салыстыру
Сұрақтар:
Бағыныңқы сұраныс дегеніміз не?
ANY тексерісі?
ALL тексерісі?
Тапсырмалар:
ANY предикаты
ALL предикаты
Сұраныстардың енгізілу деңгейлері
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 фамилия
FROM ПРОДАВЦЫ
WHERE номер_продавца <> ANY
(SELECT номер_менеджера
FROM МАГАЗИНЫ)
ALL тексерісінде алты салыстыру операторларының біреуінің көмегінің тексерілетін мән кезекпен ішкі сұраныспен іріктеліп алынған бағандағы әрбір элементпен салыстырылады. Егер барлық салыстырулар TRUE нәтижесін берсе, онда ALL тексерісі TRUE мәнін қайтарады.
Жоспарлы сатылым көлемімен әрбір сатушыға нақтылы сатылым көлемі 50 пайызға дүкен жоспарынан асатын дүкендер тізімін шығару:
SELECT город, план_объем
FROM МАГАЗИНЫ
WHERE (0.50*план_объем) < ALL
(SELECT продажа
FROM ПРОДАВЦЫ
WHERE магазин=номер_магазина)
Егер ішкі сұраныс HAVING ұсынысында болса, онда ол жолдар тобын таңдауға қатысады.
БЕЛ (Белоруссия) жасаған қосалқы бөлшектерге тапсырыстар құны тапсырыстардың жалпы орташа құнынан үлкен болатын сатушылар тізімін шығару:
SELECT фамилия, AVG(стоимость)
FROM ПРОДАВЦЫ, ЗАКАЗЫ
WHERE номер_продавца=продавец
AND изг='БЕЛ'
GROUP BY фамилия, номер_продавца
HAVING AVG(стоимость) >=
(SELECT AVG(стоимость)
FROM ЗАКАЗЫ
WHERE продавец=номер_продавца)
Достарыңызбен бөлісу: |