Ողջույն սիրելի ընթերցողներ: Այսօր ցանկանում եմ խոսել MySQL ագրեգատային ֆունկցիաների մասին, որոնք հաճախ են օգտագործվում MySQL հարցումների մեջ: Դրանք հնարավորություն են տալիս խմբավորել հարցման վերադարձրած արդյունքը մեկ արժեքի մեջ: Ագրեգատային ֆունկցիաներն են՝
- COUNT() – ցուցադրում է հարցման վերադարձրած տողերի քանակը, որոնց մեջ չկա NULL արժեք:
- SUM() – ցուցադրում է ընտրված սյան բոլոր արժեքների գումարը:
- AVG() – ցուցադրում է ընտրված սյան արժեքների թվաբանական միջինը:
- MAX() – ցուցադրում է ընտրված սյան արժեքներից մեծագույնը:
- MIN() – ցուցադրում է ընտրված սյան արժեքներից փոքրագույնը:
- GROUP_CONCAT() – ցուցադրում է ոչ NULL արժեքները՝ իրար միացած:
Ագրեգատային ֆունկցիաների արգումենտ է հանդիսանում աղյուսակի սյան անունը և օգտագործվում է հիմնականում SELECT հարցման հետ: SUM() և AVG() ֆունկցիաները օգտագործվում են միայն թվային տիպի տվյալների հետ, իսկ մյուսներն օգտագործվում են և՛ թվային, և՛ սիմվոլային տիպերի հետ: MAX() և MIN() ֆունկցիաները սիմվոլային տիպերի հետ աշխատելիս դրանք համեմատում են ASCII ստանդարտի համաձայն, այսինքն MIN()-ը օգտագործելու ժամանակ կվերադարձնի այբբենական սկզբի կարգից սկսած, իսկ MAX()-ը՝ վերջից սկսած առաջին համընկած սիմվոլով սկսվողը:
Սրանց օգտագործումն ավելի պարզ կդառնա, եթե դիտարկենք օրինակներով: Վերցնենք SQL լեզվի հիմնական հրամաններ հոդվածում ստեղծած աղյուսակը: Ստանանք աղյուսակում ունեցած տողերի քանակը՝ COUNT() ֆունկցիայով:
SELECT COUNT(*) FROM `staff_list`
Այստեղ *-ը նշանակում է ամբողջը: Դրա փոխարեն կարող եք օգտագործել նաև all բառը, սակայն ի տարբերություն *-ի այն հաշվի չի առնում NULL արժեքով տողերը:
MAX()-ի և MIN()-ի օգտագործումը թվային տիպի հետ ինձ թվում է, արդեն պարզ է, դրա համար դիտարկենք դրանց օգտագործումը տողային տիպի հետ:
Աղյուսակից ստանանք այբբենական կարգի առաջին տառով սկսվող մարդու անունը, ով ծնվել է 1995թ-ից հետո՝
SELECT MIN(`first_name`) FROM `staff_list` WHERE `birthday` > 1995
Իսկ հիմա ստանանք հակառակը՝
SELECT MAX(`first_name`) FROM `staff_list` WHERE `birthday` > 1995
Ունենք նաև աշխատավարձերի սյուն և մեզ անհրաժեշտ է գտնել միջին աշխատավարձի չափը:
SELECT AVG(`salary`) FROM `staff_list`
Կարող ենք նաև ստանալ ամբողջ աշխատավարձերի ընդհանուր գումարը.
SELECT SUM(`salary`) FROM `staff_list`
GROUP_CONCAT()-ը հնարավորություն է տալիս միավորել սյան ոչ NULL արժեքները և ցուցադրել մի տողով: Օրինակ՝ ստանանք բոլոր աշխատողների անունները մեկ տողով՝
SELECT GROUP_CONCAT(`first_name`) FROM `staff_list`
կունենանք հետևյալ տեսքը՝
Կարող ենք նաև ստորակետի փոխարեն օգտագործել այլ միացման նշան, դրա համար օգտագործվում է SEPARATOR արգումենտը՝
SELECT GROUP_CONCAT(`first_name` SEPARATOR '-') FROM `staff_list`
Սրանք են հիմնական օգտագործվող MySQL ագրեգատային ֆունկցաիները: Կան նաև այլ ագրեգատային ֆունկցիաներ, որոնք շատ կիրառություն չունեն, օրինակ` BIT_AND(), BIT_OR(), STD(), STDDEV_SAMP(), VAR_POP(), VARIANCE() և այլն:
Շնորհակալություն մեր բլոգից օգտվելու համար։ Հարգանքներով՝ IT-Blog.am թիմ։