Шарты бар Sql сомасы. SQL агрегаттық функциялары - SUM, MIN, MAX, AVG, COUNT. Параметрлер немесе аргументтер

Белгілі бір жеткізуші шығарған ДК үлгілерінің санын қалай білуге ​​болады? Бірдей компьютерлердің орташа бағасын қалай анықтауға болады техникалық сипаттама? Кейбір статистикалық ақпаратқа қатысты осы және басқа да көптеген сұрақтарды қолдану арқылы жауап беруге болады қорытынды (жиынтық) функциялар. Стандарт келесі жиынтық функцияларды қамтамасыз етеді:

Барлық осы функциялар бір мәнді қайтарады. Сонымен қатар, функциялар COUNT, MINЖәне МАКСкез келген деректер түріне қолданылады, ал СУМЖәне AVGтек сандық өрістер үшін қолданылады. Функция арасындағы айырмашылық COUNT(*)Және COUNT(<имя поля>) Екіншісі есептеу кезінде NULL мәндерін есепке алмайды.

Мысал. Дербес компьютерлердің минималды және максималды бағасын табыңыз:

Мысал. А өндірушісі шығарған компьютерлердің қолжетімді санын табыңыз:

Мысал. Егер бізді A өндірушісі шығарған әртүрлі модельдер саны қызықтырса, онда сұранысты келесідей тұжырымдауға болады (Өнім кестесінде әрбір модель бір рет жазылатынын пайдалана отырып):

Мысал. Өндіруші А шығарған қолжетімді әртүрлі модельдердің санын табыңыз. Сұрау алдыңғыға ұқсас, онда өндіруші A шығарған модельдердің жалпы санын анықтау қажет болды. Мұнда сонымен қатар әртүрлі модельдердің санын табу керек. ДК кестесі (яғни, сатуға болатындар).

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

Бізге шығарылатын ДК үлгілерінің санын алу қажет болса барлығыөндіруші, пайдалану қажет болады GROUP BY сөйлемі, синтаксистік келесі WHERE сөйлемдері.

GROUP BY сөйлемі

GROUP BY сөйлеміқолдануға болатын шығыс сызықтарының топтарын анықтау үшін пайдаланылады жиынтық функциялар (COUNT, MIN, MAX, AVG және SUM). Егер бұл тармақ жоқ болса және біріктіру функциялары пайдаланылса, онда аталған атаулары бар барлық бағандар ТАҢДАУ, құрамына енуі керек агрегаттық функциялар, және бұл функциялар сұрау предикатын қанағаттандыратын жолдардың бүкіл жинағына қолданылады. Әйтпесе, ТАҢДАУ тізімінің барлық бағандары қосылмағанжиынтықта функциялар көрсетілуі керек GROUP BY сөйлемінде. Нәтижесінде барлық шығыс сұрау жолдары осы бағандардағы мәндердің бірдей комбинацияларымен сипатталатын топтарға бөлінеді. Осыдан кейін әр топқа жиынтық функциялар қолданылады. GROUP BY үшін барлық NULL мәндері тең деп есептелетінін ескеріңіз, яғни. NULL мәндері бар өріс бойынша топтастыру кезінде мұндай жолдардың барлығы бір топқа түседі.
Егер GROUP BY сөйлемі болса, ТАҢДАУ сөйлемінде жиынтық функциялары жоқ, содан кейін сұрау әр топтан бір жолды қайтарады. Бұл мүмкіндікті DISTINCT кілт сөзімен бірге нәтижелер жиынындағы қайталанатын жолдарды жою үшін пайдалануға болады.
Қарапайым мысалды қарастырайық:
ТАҢДАУ үлгісі, COUNT(модель) АС Саны_моделі, AVG(бағасы) AS Орт_бағасы
ДКДЕН
GROUP BY моделі;

Бұл сұраныста әрбір ДК моделі үшін олардың саны мен орташа құны анықталады. Бірдей үлгі мәні бар барлық жолдар топты құрайды және SELECT шығысы әр топ үшін мәндер санын және орташа баға мәндерін есептейді. Сұрау нәтижесі келесі кесте болады:
үлгі Саны_моделі Орташа_баға
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

Егер ТАҢДАУ күн бағанына ие болса, онда бұл көрсеткіштерді әрбір нақты күн үшін есептеуге болады. Мұны істеу үшін топтау бағанасы ретінде күнді қосу керек, содан кейін жиынтық функциялар мәндердің әрбір комбинациясы (модель-күн) үшін есептелетін болады.

Бірнеше нақты бар жиынтық функцияларды орындау ережелері:

  • Егер сұрау салу нәтижесінде жолдар алынған жоқ(немесе берілген топ үшін бір жолдан көп), онда жиынтық функциялардың кез келгенін есептеу үшін бастапқы деректер жоқ. Бұл жағдайда COUNT функцияларының нәтижесі нөлге тең болады, ал қалған барлық функциялардың нәтижесі NULL болады.
  • Аргументагрегаттық функция өзі жиынтық функцияларды қамти алмайды(функциядан функция). Анау. бір сұрауда, айталық, орташа мәндердің максимумын алу мүмкін емес.
  • COUNT функциясының орындалу нәтижесі болып табылады бүтін сан(БҮТІН САН). Басқа жиынтық функциялар олар өңдейтін мәндердің деректер түрлерін мұра етеді.
  • SUM функциясы пайдаланылған деректер түрінің ең үлкен мәнінен үлкен нәтиже берсе, қате.

Сонымен, егер сұрауда жоқ болса GROUP BY сөйлемдері, Бұл агрегаттық функцияларкіреді SELECT сөйлемі, барлық нәтижелі сұрау жолдарында орындалады. Егер сұрауда болса GROUP BY сөйлемі, көрсетілген бағанның немесе бағандар тобының мәндері бірдей жолдардың әрбір жинағы GROUP BY сөйлемі, топты құрайды және агрегаттық функцияларәр топ үшін жеке орындалады.

Ұсыныс БАР

Егер WHERE сөйлеміжолдарды сүзуге арналған предикатты анықтайды, содан кейін Ұсыныс БАРқолданылады топтастырудан кейінтоптарды мәндер бойынша сүзетін ұқсас предикатты анықтау агрегаттық функциялар. Бұл тармақ көмегімен алынған мәндерді тексеру үшін қажет агрегаттық функцияішінде анықталған жазба көзінің жеке жолдарынан емес FROM сөйлемі, және бастап осындай жолдардың топтары. Сондықтан мұндай тексеруді қамту мүмкін емес WHERE сөйлемі.

SQL тіліндегі SUM функциясы өзінің қарапайымдылығына қарамастан, мәліметтер қорымен жұмыс істегенде жиі қолданылады. Оның көмегімен көмекші ДҚБЖ құралдарының көмегіне жүгінбей кейбір аралық немесе соңғы нәтижелерді алу ыңғайлы.

Функция синтаксисі

Көпшілігінде SQL тілдеріқосындының синтаксисі бірдей - өрістің атауы немесе олардың бірнешеуінің кейбір арифметикалық амалы ғана аргумент ретінде пайдаланылады, оның үстіне қосынды қажет.

Ерекше жағдайларда белгілі бір мәнді сан немесе айнымалы ретінде беруге болады, бірақ мұндай «схемалар» іс жүзінде қолданылмайды, өйткені олар көп мән бермейді. Төменде SQL тіліндегі функция синтаксисі берілген:

sum(a) - мұнда кейбір сандық мән немесе өрнек a параметрі ретінде пайдаланылады

Айта кету керек, параметр алдында кілт сөздерді орнатуға болады, мысалы, DISTINCT немесе ALL, олар сәйкесінше тек бірегей немесе барлық мәндерді қабылдайды.

SQL жүйесінде SUM қолдану мысалы

Функцияның қалай жұмыс істейтінін толық түсіну үшін бірнеше мысалды қарастырған жөн. SQL тілінде SUM қайтару нәтижесі ретінде де, аралық мән ретінде де пайдаланылуы мүмкін, мысалы, шартты тексеру үшін.

Бірінші жағдайда, сатып алулар саны көпше түрде болуы мүмкін екенін ескере отырып, әрбір өнім үшін сату сомасын қайтару қажет болған кезде опцияны қарастырыңыз. Нәтижені алу үшін келесі сұрауды орындау жеткілікті:

Өнімді, соманы (сатып алу сомасы) сату тобынан өнім бойынша ТАҢДАҢЫЗ;

жауап ретінде бұл пәрменолардың әрқайсысы үшін жалпы сатып алу сомасы бар өнімдердің бірегей тізімі болады.

Екінші мысал үшін сату көлемі белгілі бір мәннен асатын өнімдердің тізімін алу керек, мысалы, 100. Бұл тапсырма бойынша нәтижені бірнеше жолмен алуға болады, олардың ең оңтайлысы бір сұранысты орындау болып табылады:

Өнімді ТАҢДАҢЫЗ (Өнімді ТАҢДАУ, сома (Сатып алу сомасы) Сатудан түскен сома ретінде) ҚАЙДА Сома > 100.

SQL – 11-сабақ. Жалпы функциялар, есептелген бағандар және көріністер

Жалпы функциялар статистикалық, жиынтық немесе қосынды функциялар деп те аталады. Бұл функциялар бір мәнді санау және қайтару үшін жолдар жинағын өңдейді. Мұндай тек бес функция бар:
  • AVG() функциясы бағанның орташа мәнін қайтарады.

  • COUNT() функциясы бағандағы жолдар санын қайтарады.

  • MAX() функциясы бағандағы ең үлкен мәнді қайтарады.

  • MIN() функциясы бағандағы ең кіші мәнді қайтарады.

  • SUM() Функция баған мәндерінің қосындысын қайтарады.

Біз олардың біреуімен - COUNT() - 8-сабақта кездестік. Енді басқалармен танысайық. Біздің дүкендегі кітаптардың ең төменгі, максималды және орташа бағасын білгіміз келді делік. Содан кейін бағалар кестесінен баға бағанының ең төменгі, максималды және орташа мәндерін алу керек. Сұраныс қарапайым:

Бағалардан MIN(баға), MAX(баға), AVG(баға) ТАҢДАҢЫЗ;

Енді «Полиграфия үйі» жеткізуші (id=2) бізге қанша тауар әкелгенін білгіміз келеді. Мұндай өтініш жасау оңай емес. Оны қалай құрастыру туралы ойланайық:

1. Алдымен Жабдықтаулар (кіріс) кестесінен «Баспахана» (id=2) жеткізушісі жүзеге асырған жеткізілімдердің идентификаторларын (id_incoming) таңдаңыз:

2. Енді «Жеткізу журналы» кестесінен (журнал_кіріс) 1-тармақта көрсетілген жеткізулерде жүзеге асырылған тауарларды (id_product) және олардың санын (санын) таңдау керек. Яғни, 1-тармақтағы сұрау кірістірілген болады:

3. Енді алынған кестеге Бағалар кестесінде сақталған табылған өнімдердің бағаларын қосу керек. Яғни, бізге id_product бағанын пайдаланып Жабдық журналы (magazine_incoming) және Бағалар кестелеріне қосылуымыз керек:

4. Алынған кестеде «Сома» бағаны анық жоқ, яғни есептелген баған. Мұндай бағандарды құру мүмкіндігі MySQL-де берілген. Ол үшін сұрауда есептелген бағанның атын және ол нені есептеу керектігін көрсету керек. Біздің мысалда мұндай баған жиынтық деп аталады және ол сан мен баға бағандарының туындысын есептейді. Жаңа бағанның атауы AS сөзімен бөлінген:

ТАҢДАҢЫЗ magazine_incoming.id_product, magazine_incoming.quantity, price.price, magazine_incoming.quantity*prices.price ЖУРНАЛДАРДЫҢ жиыны ретінде, бағалар WHERE magazine_incoming.id_product= price.id_product AND id_incoming=coming2HER (SELECT_incoming.id_her);

5. Тамаша, бізге тек жиынтық бағанын қосып, соңында «Баспахана» жеткізушісінің бізге тауарды қаншаға әкелгенін білу жеткілікті. SUM() функциясын пайдалану синтаксисі келесідей:

Кесте_атаудан ТАҢДАУ СУМ(баған_атауы);

Біз бағанның атын білеміз - жиынтық, бірақ кестенің аты бізде жоқ, өйткені ол сұраудың нәтижесі. Енді не істеу керек? Мұндай жағдайлар үшін MySQL-де Views бар. Көрініс - бірегей атау берілген және кейінірек пайдалану үшін дерекқорда сақталуы мүмкін таңдау сұрауы.

Көрініс құру синтаксисі келесідей:

Сұраныс АСЫ КӨРІНІС_Атын ЖАСАУ;

Сұрауымызды report_vendor деп аталатын көрініс ретінде сақтайық:

report_vendor КӨРІНІСІН magazin_incoming.id_product, magazine_incoming.quantity, price.price, magazine_incoming.quantity*prices.price ЖАСАУ ЖУРНАЛДАРДЫҢ жиынтықтауы, JHERE magazine_incoming.id_product= WHERE magazine_incoming.id_product=FORSE.id_productincom (SELECT.id_productincom incoming). _vendor=2 );

6. Енді сіз SUM() соңғы функциясын пайдалана аласыз:

Есеп_өндірушіден СУММ(қосынды) ТАҢДАУ;

Осылайша, біз нәтижеге қол жеткіздік, бірақ ол үшін кірістірілген сұрауларды, біріктірулерді, есептелген бағандарды және көріністерді пайдалану керек болды. Иә, кейде нәтижеге жету үшін ойлану керек, онсыз сіз ешқайда жете алмайсыз. Бірақ біз екі өте маңызды тақырыпты қозғадық - есептелген бағандар мен көріністер. Олар туралы толығырақ сөйлесейік.

Есептелген өрістер (бағандар)

Мысал арқылы біз бүгін математикалық есептелетін өрісті қарастырдық. Мұнда тек көбейту (*) амалын ғана емес, азайту (-), қосу (+) және бөлу (/) амалдарын да қолдануға болатынын қосқым келеді. Синтаксис келесідей:

ТАҢДАУ баған_атауы 1, баған_атауы 2, баған_атауы 1 * баған_атауы 2 AS есептелетін_баған_атауы Кесте_атауы;

Екінші нюанс - AS кілт сөзі, біз оны есептелген бағанның атын орнату үшін пайдаландық. Шын мәнінде, бұл кілт сөз кез келген бағандарға бүркеншік аттар орнату үшін пайдаланылады. Бұл не үшін қажет? Кодты азайту және оқуға ыңғайлы болу үшін. Мысалы, біздің көзқарасымыз келесідей болуы мүмкін:

A.id_product= A.id_product= B.id_product ЖӘНЕ id_incoming= (Кіріс идентификаторы_өнімін ТАҢДАҢЫЗ) A.id_product= A.id_product= B.id_product ЖӘНЕ id_incoming= ЖЕРДЕ A.id_product, A.quantity, B.price, A.quantity*B. price FROM JURNAL_INcoming A AS INCOMing ЕСЕП ҚАРАУ КӨРІНІСІ ЖАСАҢЫЗ. WHERE id_vendor=2);

Бұл әлдеқайда қысқа және түсінікті екеніне келісіңіз.

Өкілдік

Көріністерді жасау синтаксисін қарастырдық. Көріністер жасалғаннан кейін оларды кестелер сияқты пайдалануға болады. Яғни, оларға қарсы сұрауларды іске қосыңыз, деректерді сүзіп, сұрыптаңыз және кейбір көріністерді басқалармен біріктіріңіз. Бір жағынан, бұл жиі қолданылатындарды сақтаудың өте ыңғайлы тәсілі күрделі сұраулар(біздің мысалдағыдай).

Бірақ көріністер кесте емес екенін есте сақтаңыз, яғни олар деректерді сақтамайды, тек оны басқа кестелерден алады. Демек, біріншіден, кестелердегі деректер өзгерген кезде презентация нәтижелері де өзгереді. Ал екіншіден, көрініске сұраныс жасалғанда қажетті мәліметтер ізделеді, яғни ДҚБЖ өнімділігі төмендейді. Сондықтан оларды теріс пайдаланбау керек.

Осыда оқулықпайдалануды үйренесіз SUM функциясыВ SQL сервері(Transact-SQL) синтаксисі және мысалдары бар.

Сипаттама

SQL серверінде (Transact-SQL) SUM функциясыөрнектің жалпы мәнін қайтарады.

Синтаксис

SQL серверіндегі (Transact-SQL) SUM функциясының синтаксисі:

НЕМЕСЕ нәтижелерді бір немесе бірнеше бағандар бойынша топтағанда SUM функциясының синтаксисі:

Параметрлер немесе аргументтер

өрнек1 , өрнек2 , ... өрнек_n - SUM функциясына қосылмаған өрнектер және SQL операторының соңында GROUP BY сөйлеміне қосылуы керек.
aggregate_expression - біріктірілетін баған немесе өрнек.
кестелер - жазбаларды алғыңыз келетін кестелер. FROM тармағында тізімделген кем дегенде бір кесте болуы керек.
WHERE шарттары - міндетті емес. Бұл таңдалған жазбалар үшін орындалуы керек шарттар.

Қолдану

SUM функциясын SQL Server (Transact-SQL) келесі нұсқаларында пайдалануға болады:
SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

Бір өрісі бар мысал

SQL серверінде (Transact-SQL) SUM функциясын пайдалану жолын түсіну үшін SQL Server SUM функциясының кейбір мысалдарын қарастырайық.

Мысалы, саны 10-нан асатын барлық өнімдердің жалпы санын білуге ​​болады.

SUM функциясының осы мысалында біз SUM(сан) өрнегін «Жалпы сан» деп атадық. Нәтижелер жиынын қайтарған кезде – өріс атауы ретінде «Жалпы саны» пайда болады.

DISTINCT пайдалану мысалы

SUM функциясында DISTINCT операторын пайдалануға болады. Мысалы, төмендегі SQL мәлімдемесіЖалақы жылына 29 000 доллардан төмен болатын бірегей жалақы мәндері бар жалпы жалақыны қайтарады.

Егер екі жалақы жылына $24,000 болса, SUM функциясында осы мәндердің тек біреуі ғана пайдаланылады.

Формула қолдану мысалы

SUM функциясындағы өрнектің бір өріс болуы міндетті емес. Сіз сондай-ақ формуланы пайдалана аласыз. Мысалы, сіз жалпы комиссияны есептей аласыз.

Transact-SQL

Тапсырыстардан "Жалпы комиссия" РЕТІНДЕ СУМ(сатылым * 0,03) ТАҢДАУ;

СОМДЫ ТАҢДАУ (сатылым * 0,03 ) "Жалпы комиссия" РЕТІНДЕ

тапсырыстардан;

GROUP BY қолдану мысалы

Кейбір жағдайларда GROUP BY операторын SUM функциясымен пайдалану қажет болады.

Қорытындылауды үйренейік. Жоқ, бұл SQL зерттеу нәтижелері емес, деректер қоры кестелерінің бағандарының мәндерінің нәтижелері. SQL жиынтық функциялары бір нәтиже мәнін шығару үшін баған мәндерінде жұмыс істейді. Ең жиі қолданылатын SQL агрегаттық функциялары: SUM, MIN, MAX, AVG және COUNT. Жиынтық функцияларды қолданудың екі жағдайын ажырату қажет. Біріншіден, жиынтық функциялар өздігінен пайдаланылады және бір нәтиже мәнін қайтарады. Екіншіден, жиынтық функциялар SQL GROUP BY тармағымен пайдаланылады, яғни әрбір топтағы нәтиже мәндерін алу үшін өрістер (бағандар) бойынша топтастыру. Алдымен топтастырусыз жиынтық функцияларды қолдану жағдайларын қарастырайық.

SQL SUM функциясы

SQL SUM функциясы дерекқор кестесінің бағанындағы мәндердің қосындысын қайтарады. Оны мәндері сандар болатын бағандарға ғана қолдануға болады. SQL сұрауларынәтижесінде алынған соманы алу үшін келесідей бастаңыз:

СОМДАНЫ ТАҢДАУ (COLUMN_NAME) ...

Бұл өрнектен кейін FROM (TABLE_NAME), содан кейін шартты WHERE сөйлемі арқылы көрсетуге болады. Сонымен қатар, баған атауының алдында DISTINCT болуы мүмкін, яғни тек бірегей құндылықтар. Әдепкі бойынша барлық мәндер ескеріледі (ол үшін сіз DISTINCT емес, БАРЛЫҚ дегенді нақты көрсете аласыз, бірақ БАРЛЫҚ сөзі қажет емес).

MS SQL серверінде осы сабақтан дерекқор сұрауларын іске қосқыңыз келсе, бірақ бұл ДҚБЖ сіздің компьютеріңізде орнатылмаған болса, оны мына сілтемедегі нұсқауларды пайдаланып орнатуға болады. .

Алдымен біз компанияның дерекқорымен жұмыс істейміз - Company1. Бұл дерекқорды, оның кестелерін құруға және кестелерді деректермен толтыруға арналған сценарий осы сілтемедегі файлда .

1-мысал.Компанияның бөлімшелері мен қызметкерлері туралы мәліметтері бар мәліметтер базасы бар. Қызметкерлер кестесінде қызметкерлердің жалақысы туралы деректер бар баған да бар. Кестеден таңдау келесідей болады (суретті үлкейту үшін тінтуірдің сол жақ түймешігімен басыңыз):

Барлық жалақының сомасын алу үшін біз келесі сұрауды қолданамыз (MS SQL серверінде - USE company1 алдыңғы құрылысымен;):

ҚЫЗМЕТКЕРЛЕРДЕН СОМА (Жалақы) ТАҢДАУ

Бұл сұрау 287664.63 мәнін қайтарады.

Ал енді . Жаттығуларда біз қазірдің өзінде тапсырмаларды қиындата бастаймыз, оларды тәжірибеде кездесетіндерге жақындатамыз.

SQL MIN функциясы

SQL MIN функциясы мәндері сандар болатын бағандарда да жұмыс істейді және бағандағы барлық мәндердің ең азын қайтарады. Бұл функцияның SUM функциясына ұқсас синтаксисі бар.

3-мысал.Деректер базасы мен кесте 1-мысалдағыдай.

Минималды білу керек жалақы№ 42 бөлімше қызметкерлері. Ол үшін келесі сұранысты жазыңыз (MS SQL Server-де - USE company1 алдыңғы конструкциясымен;):

Сұрау 10505.90 мәнін қайтарады.

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


4-мысал.Ұйымдар кестесі компанияның бөлімдері туралы деректерді қамтитын Қызметкерлер кестесіне қосылады. Бостонда орналасқан бөлімде бір қызметкердің жұмыс істеген ең аз жыл санын басып шығарыңыз.

SQL MAX функциясы

SQL MAX функциясы ұқсас жұмыс істейді және ұқсас синтаксисі бар, ол бағандағы барлық мәндер арасындағы максималды мәнді анықтау қажет болғанда пайдаланылады.

5-мысал.

№ 42 бөлімшедегі қызметкерлердің ең жоғары жалақысын білуіміз керек. Ол үшін келесі сұранысты жазыңыз (MS SQL Server – USE company1 префиксімен;):

Сұрау 18352.80 мәнін қайтарады

Уақыт келді дербес шешуге арналған жаттығулар.

6-мысал.Біз қайтадан екі кестемен жұмыс істейміз - Қызметкерлер және Орг. Бөлім атауын және шығыс бөлімшелер тобына жататын бөлімде (Бөлім) бір қызметкер алған комиссияның максималды мәнін көрсетіңіз. Қолдану JOIN (кестелерді біріктіру) .

SQL AVG функциясы

Сипатталған алдыңғы функциялардың синтаксисіне қатысты айтылғандар SQL AVG функциясына да қатысты. Бұл функция бағандағы барлық мәндердің орташа мәнін қайтарады.

7-мысал.Дерекқор мен кесте алдыңғы мысалдардағыдай.

Сіз № 42 бөлімшедегі қызметкерлердің орташа еңбек өтілін білгіңіз келеді делік. Ол үшін келесі сұранысты жазыңыз (MS SQL серверінде - USE company1 алдыңғы конструкциясымен;):

Нәтиже 6,33 болады

8-мысал.Біз бір үстелмен жұмыс істейміз - Қызметкерлер. 4 жылдан 6 жылға дейін жұмыс өтілі бар қызметкерлердің орташа жалақысын көрсетіңіз.

SQL COUNT функциясы

SQL COUNT функциясы дерекқор кестесіндегі жазбалар санын қайтарады. Сұрауда SELECT COUNT(COLUMN_NAME) ... көрсетсеңіз, нәтиже баған мәні NULL (анықталмаған) болатын жазбаларды есепке алмаған жазбалар саны болады. Аргумент ретінде жұлдызшаны қолдансаңыз және SELECT COUNT(*) ... сұрауын бастасаңыз, нәтиже кестенің барлық жазбаларының (жолдарының) саны болады.

9-мысал.Дерекқор мен кесте алдыңғы мысалдардағыдай.

Сіз комиссия алатын барлық қызметкерлердің санын білгіңіз келеді. Comm бағанының мәндері NULL емес қызметкерлер саны келесі сұрау арқылы қайтарылады (MS SQL серверінде - USE company1 префиксімен;):

Қызметкерлерден COUNT (Comm) ТАҢДАҢЫЗ

Нәтиже 11 болады.

10-мысал.Дерекқор мен кесте алдыңғы мысалдардағыдай.

Кестедегі жазбалардың жалпы санын білгіңіз келсе, COUNT функциясына аргумент ретінде жұлдызшасы бар сұрауды пайдаланыңыз (MS SQL серверінде - USE company1 алдыңғы конструкциясымен;):

Қызметкерлерден САН (*) ТАҢДАҢЫЗ

Нәтиже 17 болады.

Келесіде тәуелсіз шешуге арналған жаттығуішкі сұрауды пайдалану қажет болады.

11-мысал.Біз бір үстелмен жұмыс істейміз - Қызметкерлер. Жоспарлау бөліміндегі қызметкерлердің санын көрсетіңіз (Plains).

SQL GROUP BY көмегімен функцияларды біріктіру

Енді жиынтық функцияларды SQL GROUP BY операторымен бірге пайдалануды қарастырайық. SQL GROUP BY операторы нәтиже мәндерін дерекқор кестесіндегі бағандар бойынша топтау үшін қолданылады. Веб-сайтта бар осы операторға бөлек арналған сабақ .

Біз «Жарнамалар порталы 1» дерекқорымен жұмыс істейтін боламыз. Бұл дерекқорды, оның кестесін құруға және деректер кестесін толтыруға арналған сценарий осы сілтемедегі файлда .

12-мысал.Сонымен, жарнама порталының мәліметтер базасы бар. Онда апта бойы жіберілген хабарландырулар туралы деректерді қамтитын Жарнамалар кестесі бар. Санат бағанында үлкен жарнама санаттары туралы деректер (мысалы, Жылжымайтын мүлік), ал Бөлшектер бағанында санаттарға енгізілген кішірек бөліктер туралы деректер бар (мысалы, Пәтерлер және Жазғы үйлер бөліктері Жылжымайтын мүлік санатының бөліктері болып табылады). Бірліктер бағанында жіберілген хабарландырулар саны туралы деректер, ал «Ақша» бағанында жарнаманы жіберу үшін алынған ақша сомасы туралы деректер бар.

СанатБөлімБірліктерАқша
КөлікКөліктер110 17600
Жылжымайтын мүлікПәтерлер89 18690
Жылжымайтын мүлікСаяжайлар57 11970
КөлікМотоциклдер131 20960
Құрылыс материалдарыТақталар68 7140
Электротехникателедидарлар127 8255
ЭлектротехникаТоңазытқыштар137 8905
Құрылыс материалдарыРегиптер112 11760
Бос уақытКітаптар96 6240
Жылжымайтын мүлікҮйде47 9870
Бос уақытМузыка117 7605
Бос уақытОйындар41 2665

SQL GROUP BY мәлімдемесін қолданып, әр санаттағы хабарландыруларды орналастыру арқылы тапқан ақша сомасын табыңыз. Біз келесі сұрауды жазамыз (MS SQL серверінде - алдыңғы USE adportal1 конструкциясымен;):

САНАТ БОЙЫНША ЖАРНАМАЛАР ТОБЫНАН ақша ретінде СУМ (ақша) санатын ТАҢДАҢЫЗ

13-мысал.Дерекқор мен кесте алдыңғы мысалдағыдай.

SQL GROUP BY операторын қолданып, әрбір санаттың қай бөлігінде ең көп тізім бар екенін табыңыз. Біз келесі сұрауды жазамыз (MS SQL серверінде - алдыңғы USE adportal1 конструкциясымен;):

Санатты, бөлікті, MAX (бірліктер) МЕКСІМДІ ЖАРНАМАЛАР ТОБЫНАН САНАТ БОЙЫНША ТАҢДАУ

Нәтиже келесі кесте болады:

Жалпы және жеке мәндерді бір кестеде алуға болады UNION операторының көмегімен сұрау нәтижелерін біріктіру .

Реляциялық деректер қоры және SQL тілі




Жоғарғы