Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Агрегаттық функциялар.

Кейбіржағдайлардасұраныстыңөзіндеөрісмəнінесептеу, табылған

жазбаларсанынесептеу, өрістердіңмаксималдымəнінесептеунемесебасқадаесептеулержүргізуқажетболады. Осындаймəселелердішешуфункциясынагрегаттықдепатайды. Агрегаттықфункциякестеніңбарлықөрістеріүшінбірмəншығарыпбереді. Агрегаттықфункциялартізімітөмендекелтірілген:

− 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 | Поможем написать вашу работу | Нарушение авторских прав

MS SQL Server ортасында деректер қорымен жұмыс жасау. Деректерқорынқұру. | Көпкестелі сұраныстар. Кестелерді біріктіру. | Кестелерді байланыстыру, ADOQuery негізгі қасиеттері. | Деректер қорын пайдаланудағы ADO технологиясы. | Деректерқорындақолданушынықұру | Берілгендерді модификациялау. Insert операторы. | Берілгендердімодификациялау. Update операторы. | Шарт бойынша таңдау | ADOTable компонентінің негізгі қасиеттері мен әдістері. | Динамикалық сұраныстар және ADOQuery параметрлері. |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав