Агрегаттык функциялар: COUNT, SUM, AVG, MIN, MAX
Бүтүн мамычадагы маанилерди бир пайдалуу жоопко айландырабыз
COUNT(*)менен саптарды,COUNT(column)менен маанилерди санай аласыз,SUMменен мамычаны кошуп,AVGменен орточону таба аласыз,MINжанаMAXменен эң кичине жана эң чоң маанини таба аласыз,- ар бир функция
NULLмаанилерди кантип иштетерин түшүндүрө аласыз, WHEREшартын кошуп, керектүү саптарды гана агрегациялай аласыз.
1. Агрегаттык функция деген эмне?
Блендерди элестетиңиз. Сиз ага бир ууч мөмө салып, баскычты басасыз - жана бир стакан ширени аласыз. Агрегаттык функция ушундай эле иштейт: сиз аны бүтүн мамычага багыттайсыз, ал болсо аларды бир жоопко аралаштырат.
Кадимки SELECT price FROM toys сурамы алты өзүнчө бааны - алты сапты - көрсөтмөк. Ал эми SELECT SUM(price) FROM toys бардык алты бааны окуп, бир санды кайтарат: алардын суммасын. Агрегациялоо деген сөз жөн эле "көптү бирге чогултуу" дегенди билдирет.
Эң көп жолугуучу беш агрегаттык функция:
COUNT- канча?SUM- жалпы сумма канча?AVG- орточосу канча?MIN- эң кичинеси кайсы?MAX- эң чоңу кайсы?
2. Мисалыбыз: оюнчук дүкөнүнүн таблицасы
Төмөнкү бардык суроо-талаптар toys деген бир кичинекей таблица менен иштейт. Мына ал: бир жолу түзүлүп, алты оюнчук менен толтурулган. discount мамычасына көңүл буруңуз: эки оюнчукта арзандатуу али жок, ошондуктан алардын мааниси NULL ("белгисиз / коюлбаган" дегенди билдирет).
CREATE TABLE toys (
id INT,
name VARCHAR(30),
price DECIMAL(5,2),
stock INT,
discount DECIMAL(4,2)
);
INSERT INTO toys VALUES
(1, 'Teddy Bear', 12.50, 8, NULL),
(2, 'Race Car', 9.00, 15, 2.00),
(3, 'Kite', 6.50, 0, NULL),
(4, 'Puzzle', 4.00, 20, 1.00),
(5, 'Doll', 15.00, 5, 3.00),
(6, 'Yo-yo', 3.00, 30, NULL);
Бүт таблица мындай көрүнөт:
| id | name | price | stock | discount |
|---|---|---|---|---|
| 1 | Teddy Bear | 12.50 | 8 | NULL |
| 2 | Race Car | 9.00 | 15 | 2.00 |
| 3 | Kite | 6.50 | 0 | NULL |
| 4 | Puzzle | 4.00 | 20 | 1.00 |
| 5 | Doll | 15.00 | 5 | 3.00 |
| 6 | Yo-yo | 3.00 | 30 | NULL |
Алты сап, ал эми discount мамычасында үч чыныгы сан жана үч NULL бар. Муну эсиңизде сактаңыз - COUNT жана AVG үчүн бул маанилүү.