Шарты бар Sql сомасы. Sql-дегі есептеулер

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

Сипаттама

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

Синтаксис

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

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

Параметрлер немесе дәлелдер

өрнек1 , өрнек2 , ... өрнек_n — SUM функциясына қосылмаған өрнектер және SQL операторының соңындағы GROUP BY сөйлеміне қосылуы керек.
жиынтық_өрнек - қосылатын баған немесе өрнек.
кестелер - жазбаларды алғыңыз келетін кестелер. 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 мысалы

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

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

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

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

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

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

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

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

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

Ұсыныс бойынша топтастыру

Ұсыныс бойынша топтастыруқолдануға болатын шығыс желілерінің топтарын анықтау үшін пайдаланылады жиынтық функциялар (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 функциясын орындау кезінде пайдаланылатын деректер түрінің максималды мәнінен асатын нәтиже алынса, a қате.

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

Ұсыныс БАР

Егер WHERE сөйлеміжолды сүзу үшін предикатты анықтайды, содан кейін HAVING сөйлеміқолданылды топтастырудан кейінмәндер бойынша ұқсас предикатты сүзу топтарын анықтау агрегаттық функциялар. Бұл тармақ алынған мәндерді тексеру үшін қажет агрегаттық функцияішінде анықталған жазба көзінің бөлек жолдарынан емес 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 бағаны бойынша Жабдық журналы (журнал_кіріс) және Бағалар (бағалар) кестелеріне қосылуымыз керек:

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 ЖӘНЕ id_incoming=coming2HERE);

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

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

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

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

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

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

report_vendor КӨРІНІСІН magazin_incoming.id_product, magazine_incoming.quantity, price.price, magazine_incoming.quantity*prices.price ЖҰМЫС ЖАҒДАЙЫНДА ЖАСАУ Magazin_incoming.id_product= WHERE magazine_incoming.id_product=WHERE magazine_incoming.id_product=FRIES.id_comingcoming (SELECT.id_productincom) id_vendor=2 );

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

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

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

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

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

ТАҢДАҢЫЗ col_name_1, col_name_2, col_name_1*col_name_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);

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

Өкілдік

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

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

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

SQL SUM функциясы

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

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

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

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 Server – USE company1 префиксімен;):

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

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

SQL COUNT функциясы

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

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

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

Қызметкерлерден 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 тілі