|
Кейбіржағдайлардасұраныстыңөзіндеөрісмəнінесептеу, табылған
жазбаларсанынесептеу, өрістердіңмаксималдымəнінесептеунемесебасқадаесептеулержүргізуқажетболады. Осындаймəселелердішешуфункциясынагрегаттықдепатайды. Агрегаттықфункциякестеніңбарлықөрістеріүшінбірмəншығарыпбереді. Агрегаттықфункциялартізімітөмендекелтірілген:
− COUNT операторысұранысшартынқанағаттандыратындай
жазбаларсанынесептепбереді.
− SUM операторы өріс жазбаларының мəнін қосады.
− AVG операторы өріс жазбаларының орта мəнін есептейді.
− МАХ операторы берілген өрістің ең үлкен мəнін есептейді.
− MIN операторы берілген өрістің ең кіші мəнін есептейді.
Агрегаттық функциялар сұраныста өріс аттарымен қолданылады, алөрістердің аттары оларға аргумент ретінде беріледі. SUM жəне AVGоператорларын тек қана сандық өрістерде қолданады. COUNT, MAX жəне MIN операторлары сандық жəне символдық өрістерде қолданады. MAX жəне MIN функцияларын символдық өрістерде қолдануда, олардың мəндері ASCII-кодқаайландырылады. Функцияның минималды мəніне алфавит символы, оның бас жағындағы, сəйкес келеді, максималды мəніне соңына қарай тұрғаны сəйкес келеді. COUNT функциясы барлық жазбаларды есептейді. Жазбалардағы қайталанулар болған жағдайда DISTINCT операторы қолданылады. Бұл оператор COUNT функциясының ішінде, өріс атының алдында орналасады.
Мысалы,
Select count(*) from Persоператоры Pers кестесіндегі жазбалардың толық санын есептейді, алSelectcount(*) fromPerswhereDep=’Бухгалтерия’ операторы бухгалтерия қызметкерлерінің жазбалар санын есептейді.Select count(DISTINCT Dep) from Pers операторы Pers кестесінің Dep өрісіндегі əртүрлі бөлімшелердің санын есептейді.Төменде Orders кестесіндегі Freight өрісінен салмағы үш жүз бірліктен артықболатын жүк салмағының орта мəнін, жүк салмағының минималды мəнін, жүк 29 салмағының максималды мəнін, оның қосынды мəнін жəне жүк санын есептеп
беретінсұранысжазылған.
SELECT AVG (Freight) AS орта, MIN (Freight) AS Мин, MAX (Freight) ASМакс, SUM (Freight) AS қосынды, COUNT (Freight) AS саны FROM OrdersWHERE Freight > 300
мысалы,
Select min(Year_r), max(Year_r), avg(Year_r) from Persоператорытуғанкүнніңминималды, максималдыжəнеортамəнінесептеп
береді, алSelect min(GetDate()-Year_r), max(GetDate()-Year_r), avg(GetDate()-Year_r)from Pers
операторықызметкержасынабайланыстымəндербереді, GetDate() –MS SQLServer-дегіағымдағыуақыт.
AVG жəне SUM функцияларынқалданудажазбалардаайталануларболсаDISTINCT операторықолданылады.Агрегаттық функцияларды қолдану кезінде мынандай, ең жас қызметкер
фамилиясын анықтау мысалын қарастырайық:
Select fam, max(Year_r) from PersБірақсұраныстыбұлтүрдежазуғаболмайды. Біроператордаөріспенагрегаттықфункциялардыпайдаланудажазбалардытоптаудыпайдалануқажет,яғникілттіксөз Group By дықолдануқажет.Group By операторы агрегаттық функциялар қолданылатын өрістердіанықтау үшін пайдаланылады. Егер бұл оператор анық көрсетілмеген болса,онда SELECT өрнегінде көрсетілген барлық өрістер агрегаттық функция
аргументі ретінде болады. GROUP BY операторының параметрі ретіндекөрсетілген өріс топтаушы болып табылады. GROUP BY операторы бірсұраныста өрістерді жəне агрегаттық функцияларды біріктіруге мүмкіндікбереді. Келесі мынандай бір сұранысты қарастырып көрейік, фирмаорналасқан қаланы іздеу керек жəне қалалар санын, фирма үшін почталықиндекстің максималды мəнін табу қажет:
SELECT City, COUNT (*) AS Саны, MAX (PostalCode) AS
Почталық_индекс FROM Customers GROUP BY CityМұндағы City өрісіагрегаттықфункцияныңпараметріретіндеалынбағандығыноңайбайқауғаболады, сондықтанол GROUP BY операторын
пайдалануменжарияланған. Сұраныстыңорындалубарысындақалалартаңдапалынған. Бұлмысалдықиындатыпкөрейік. Кестедеекінемесеодандакөпреткездесетін, соныменқатарақырғынəтижесі Buenos Aires қаласынсызболатынсұраныстыжазыпкөрейік. Бұл жағдайда WHERE операторын пайдаланудың
қажеті жоқ, өйткені ол тек жеке жазбалармен емес массивтермен жұмысжасайды. Сондықтан WHERE операторына ұқсас HAVING операторынпайдалануға тура келеді. Ал сұранысымыз айталықтай өзгереді:
SELECT City, COUNT (*) AS Саны, MAX (PostaTCode) AS Почталық_индекс
FROM
Customers Where City <> 'Buenos Aires'
GROUP BY City
HAVING COUNT (*) >=3
Енді
Select Dep, Count(*) From Pers Group By Dep
операторынқарастырсақ, екібағаннан (бөліматтарынантұратынбаған, жəнеəрбірбөлімдегіқызметкерлерсанынесептейтінбаған) тұратынкестесінбереді.АлSelect Dep, Count(*) From Pers Group By Dep Having Dep<> ‘Бухгалтерия’операторы бухгалтериядан басқа барлық бөлімдерге қатысты жолдардышығарып береді.
Дата добавления: 2015-09-12; просмотров: 72 | Поможем написать вашу работу | Нарушение авторских прав |