SELECT Тҧтынушы, COUNT (*)
FROM САТЫЛЫМДАР
GROUP BY Тҧтынушы
WHERE сӛйлемі
GROUP BY-
мен бірге пайдаланылса, онда ол
алдымен ӛңделеді
және іздеу
шартын қанағаттандыратын жолдар
ғана топтастырылады.
Мысалы,
әр
номинацияның
тауары сатылатын соманы анықтау
ҥшін (12.7-график):
[
Товар
SUM
►
Конфеты "Коровка"
5850
Конфеты "Мишка"
4500
Мармелад "Кроха"
1700
Мука пшеничная
2500
Сахар
3000
Сосиски молочные
7800
Халва
2475
12.7 сурет. Шартпен топтау сҧрауын
орындаудың
нәтижесі
SELECT П. Тауар, SUM (П. Саны^. Қҧны) FROM
САТЫЛЫМДАР П, ТАУАРЛАР Т WHERE T.Тауар =
П.Тауар GROUP BY П. Тауар
Әрбір кҥн ҥшін сатып алушылардың санын анықтау ҥшін осы
сҧранысты орындау қажет:
SELECT Кҥні, COUNT(DISTINCT Тҧтынушы) FROM
ПРОДАЖИ GROUP BY Кҥні
Егер нәтиже жиынынан алынған жолдардың нәтижелеріне
шектеулер қою керек болса, онда HAVING сӛйлемі
GROUP BY
сӛйлемінен кейін пайдаланылады. Бҧл шығу жиынтығын «сҥзу» ҥшін
қосымша мҥмкіндік. Алынған функцияларды SALES сӛйлемі тізімінде
және HAVING сӛйлемінде ғана қолдануға болатындығын ескеру керек,
ал WHERE тармағында мҧндай функцияларды кӛрсету мҥмкін емес.
Мысалы, келесі сҧраныс 3000-нан астам сатылған тауарлардың тізімін
кӛрсетуге мҥмкіндік береді.:
SELECT П. Тауар, SUM (П. Саны^. Қҧны)
FROM
САТЫЛЫМДАР П,
ТАУАРЛАР Т WHERE T.
Тауар = П. Тауар GROUP BY
П. Тауар
HAVING SUM (П. Саны^. Қҧны) >3000
Шығарылған тауарлардың жалпы саны 10 бірліктен кем болатын
тауарларды ӛткізу кҥнін кӛрсетіңіз, әр кҥнде бір мәміле жасалмады:
259
SELECT Кҥні,COUNT(*)
FROM
САТЫЛЫМДАРWHERE
Саны>=10 GROUP BY
Кҥні HAVING
COUNT(*)>1
Кейде салыстыру әрекеттерін пайдаланған кезде сҧрауларда
сҧраныстың нәтижесін салыстыру қажет мән алдын ала анықталмайды
және бірнеше мәндер болмайды немесе
басқа SELECT операторын
орындау арқылы алынады. Мҧндай жағдайларда, ішкі сҧраулар
пайдаланылады (кірістірілген сҧраулар).
Ішкі сұрау (салынған сұраулар) уақытша кестені жасау қҧралы
болып табылады, оның мазмҧны сыртқы
оператормен шығарылады
және ӛңделеді. Ішкі сҧраудың мәтіні жақшада болуы керек. Ішкі
сҧраныстағы SELECT мәлімдемесі келесі пішінге ие
:
SELECT . . .
FROM ...
WHERE <салыстырмалы мәні><оператор>(SELECT . . . ) Ішкі
сҧранымдардың екі тҥрі бар.
1.
Скалярлық ішкі сұрау бір мәнді қайтарады. Негізінде ол бір мәнді
қажет ететін жерде қолданыла алады.
2.
Кестенің ішкі сұрауы мәндер жиынтығын қайтарады, яғни.
Кестенің бір немесе бірнеше бағандарының мәндері бірнеше жолға
орналастырылады. Бҧл ҥстелге рҧқсат етілген жерде мҥмкін.
Сҧраулар бойынша бар:
■
байланыстырылмаған — жоғары деңгейлі сҧрауға сілтемелер
болмайды, олар жоғары деңгейлі сҧрау ҥшін бір
рет есептеледі;
■
байланыстырылған — негізгі сҧраудағы ӛріс мәндеріне тәуелді
шарттар бар; жоғарғы деңгейлі сҧраудың әр жолына есептеледі.
Ішкі сҧраудың негізгі немесе сыртқы синтаксисі бар,
сондықтан
ішкі сҧрау да ішкі сҧрауды қамтуы мҥмкін. Тағы бір SELECT
операторы басқа SELECT операторының корпусына ендірілген сияқты.
Сыртқы SELECT операторы бҥкіл операцияның соңғы нәтижесінің
мазмҧнын анықтау ҥшін ішкі нҧсқадағы нәтижені қолданады.
Ішкі
сҧраулар
салыстыру
операторынан
кейін
бірден
орналастырылуы мҥмкін (=, <,>, <=,> =, <>)
Достарыңызбен бөлісу: