mysql count count distinct with examples
Научете за употребите на различни форми на функцията MySQL COUNT с примери:
COUNT е проста съвкупна функция, но много ефективна и широко използвана. С много прости думи, той се използва за БРОЙ на броя редове спрямо дадена SELECT заявка и критерии.
Този урок ще обясни синтаксиса и използването на прости COUNT, COUNT с условия, COUNT с DISTINCT, COUNT с GROUP BY и т.н.
Какво ще научите:
Различни видове MySQL БРОЙ
Тип | Описание | Синтаксис |
---|---|---|
БРОЯ(*) | Функцията COUNT (*) връща не. на редове, извлечени от оператора SELECT, включително редове, съдържащи NULL и дублирани стойности | ИЗБЕРЕТЕ БРОЙ (*) ОТ {tableName} |
БРОЙ (израз) | COUNT (израз) ще отчете стойността, когато изразът не е нула. Изразът може да бъде нещо просто като име на колона или сложен израз като IF функция. | ИЗБЕРЕТЕ БРОЙ (израз) от {tableName} |
БРОЙ (РАЗЛИЧЕН израз) | COUNT (DISTINCT израз) - ключовата дума DISTINCT би довела до отчитане само на уникални ненулеви стойности спрямо израза. Например - COUNT (DISTINCT customerName) - ще брои само редове с различни стойности за името на клиента | SELECT COUNT (DISTINCT израз) от {tableName} |
MySQL COUNT Примери
Данни от теста
Ще използваме следните таблици и данни за примерите за функцията MySQL COUNT.
Маси:
# 1) Product_Details
Съхранява подробности за различни продукти в магазин
- product_id - INT
- product_name - VARCHAR
- цена - ДЕКИМАЛНА
- category_id - INT (ВЪНШЕН КЛЮЧ - id от таблица Category_Details)
# 2) Категория_Подробности:
- category_id: INT
- име на категория: VARCHAR
Нека създадем таблиците и да вмъкнем фиктивни данни, използвайки заявките по-долу:
кой е най-добрият изтеглящ mp3 за android
CREATE TABLE `product_details` ( `product_id` int NOT NULL, `product_name` varchar(100), `price` decimal(5,2), `category_id` int, FOREIGN KEY (category_id) REFERENCES category_details(category_id), PRIMARY KEY(product_id) ) CREATE TABLE `category_details` ( `category_id` int NOT NULL, `category_name` varchar(100), PRIMARY KEY(category_id) ) INSERT INTO `category_details` (`category_id`,`category_name`) VALUES (1,'FMCG'),(2,'FURNITURE'),(3,'FASHION'),(4,'APPLIANCES'),(5,'ELECTRONICS'); INSERT INTO `product_details` (`product_id`,`product_name`,`price`,`category_id`) VALUES (1,'Biscuits',0.5,1),(2,'Chocolates',1,1), (3, 'Washing Powder',5,1),(4, 'Apple IPhone', 500,5), (5, 'Batteries',2,5),(6,'Floor cleaner',2.5,1),(7,'Jeans- Levis',100,1),(8,'Mixer grinder',50,4),(9,'Capsicum',2,1),(10,'Sugar',1,1),(11,'Study Table',50,2);
Моля, обърнете се към изображенията на таблиците с тестовите данни, както са създадени по-горе.
Product_Details таблица
Таблица_детайли за категория
Обикновено БРОЙ
В този раздел ще видим функцията COUNT по най-опростен начин.
Ще използваме COUNT, за да върнем броя на редовете без никакви NULL или DISTINCT проверки.
SELECT COUNT(*) FROM product_details;
Изход:
БРОЯ(*) |
---|
единадесет |
С горната заявка просто ще получим броя на върнатите редове спрямо оператора select.
БРОЙ С УСЛОВИЯ
Сега ще използваме функцията COUNT с условия или стойности на колони.
Пример: Да предположим, че искаме да преброим не. на редове, където няма ненулеви стойности за имена на продукти.
Можем да добавим product_name (или всяко дадено име на колона) като израз във функцията COUNT, което след това ще доведе до брой редове, които имат NON NULL product_name редове.
SELECT COUNT(product_name) FROM product_details;
В този случай изходът ще бъде 11 (тъй като всички тестови данни вече имат стойности за колона с име на продукт)
Изход:
код за сортиране на избор c ++
COUNT (име на продукт) |
---|
единадесет |
Нека добавим нов ред със стойност NULL за product_name.
INSERT INTO `product_details` (`product_id`,`product_name`,`price`,`category_id`) VALUES (12,NULL,0.5,1);
SELECT COUNT(product_name) from product_details;
Горната COUNT заявка ще върне броя на всички редове с NON NULL product_name.
Тъй като вмъкнахме ред с NULL product_name, това няма да бъде върнато в резултатите. Така че изходът ще бъде все още 11 реда.
Изход:
COUNT (име на продукт) |
---|
единадесет |
БРОЙ С РАЗЛИЧЕН
В предишните примери използвахме функцията COUNT с израз. Също така можем да комбинираме израза с команда DISTINCT, за да получим всички NON NULL стойности, които също са UNIQUE.
Нека се опитаме да получим DISTINCT category_id от таблицата product_details.
SELECT COUNT(DISTINCT category_id) from product_details;
Изход:
COUNT (DISTINCT category_id) |
---|
4 |
Както можете да видите по-горе - изходът е 4, което представлява общото не. на category_id в таблица product_details.
БРОЙ С GROUP BY
Нека разгледаме пример, в който искаме да използваме COUNT заедно с GROUP BY. Това е важна комбинация, при която можем да получим COUNT срещу групирана колона и да анализираме данни в зависимост от различни стойности на целевата групирана колона.
Например: Намерете не. на продукти спрямо всяка категория от таблицата product_details.
SELECT category_id, COUNT(*) FROM product_details GROUP BY category_id;
категория_id | БРОЯ(*) |
---|---|
1 | 7 |
две | 1 |
4 | 1 |
5 | две |
Както виждаме по-горе, срещу всеки category_id колоната COUNT (*) представлява броя на редовете, принадлежащи на всяка category_id.
БРОЙ С АКО
Нека да видим пример за използване на условие IF във функцията COUNT. Можем да поставим израз IF във функцията COUNT и да зададем стойността на NULL за фалшиво състояние и всяка ненулева стойност за истинското състояние.
приложение, където можете да изтеглите видеоклипове в YouTube
Всяка NON NULL стойност ще се брои като един ред w.r.t COUNT функция.
Например: Използвайте функцията COUNT, за да намерите всички продукти в ценовия диапазон от 20 $.
SELECT COUNT(IF(price >0 AND price<20, 1, NULL)) AS count_less_than_20 FROM product_details;
Изход:
count_less_than_20 |
---|
7 |
В горната заявка получихме COUNT на всички продукти, чийто ценови диапазон е между 0 и 20. За условието FALSE сме задали стойността на NULL, която не се отчита, когато редът се оценява за различни стойности на колони .
БРОЙ С ПРИСЪЕДИНЕНИЯ
COUNT може да се използва и с изрази JOIN. Тъй като COUNT се отнася за не. от редове, може да се използва с всяка комбинация от заявка, работеща на една таблица или множество таблици, използвайки JOINS.
Пример: Присъединете се към таблицата product_details и category_details и намерете преброяване по име на категория от таблицата product_details.
SELECT category_name, COUNT(category_name) from product_details pd INNER JOIN category_details cd ON cd.category_id = pd.category_id GROUP BY category_name;
Изход:
Име на категория | COUNT (име на категория) |
---|---|
FMCG | 7 |
МЕБЕЛИ | 1 |
АПАРАТИ | 1 |
ЕЛЕКТРОНИКА | две |
Съвет и трик
Използване на псевдоним на колона за колоната, която показва резултата от функцията COUNT: Можем да използваме псевдоним на колона заедно с функцията COUNT, за да имаме дефинирани от потребителя имена на колони за колоната, показваща резултатите от функцията COUNT.
Например: Да предположим, че искаме да преброим броя на категориите в таблицата category_details и да наречем получената колона като category_count, можем да използваме заявката по-долу:
SELECT COUNT(*) as category_count from category_details;
Изход:
категория_брои |
---|
5 |
често задавани въпроси
В # 1) Как да използвам функцията COUNT в MySQL?
Отговор: Функцията COUNT е обобщена функция, която може да се използва по 3 начина.
- БРОЯ(*) - Това би преброило всички редове, върнати от SELECT QUERY.
- БРОЙ (израз) - Това би преброило всички NON NULL стойности за израза.
- COUNT (DISTINCT израз) - Това би преброило всички NON NULL и UNIQUE стойности спрямо израза.
В # 2) Каква е разликата между Count (*) и Count (1) в SQL?
Отговор: И двете твърдения се държат по идентичен начин. От дефиницията на MySQL за COUNT, всичко в скоби () е израз - и всяка NON NULL стойност ще се брои като 1.
Така че в този случай и *, и 1 се третират като NON NULL и се връща един и същ резултат, т.е. резултатът от двете заявки по-долу ще бъде еднакъв.
SELECT COUNT(*) from product_details; SELECT COUNT(1) from product_details;
Заключение
В този урок научихме за функцията COUNT и различните вариации, предоставени от MySQL.
Също така видяхме как можем да използваме COUNT с различни сценарии, като комбиниране на COUNT с GROUP BY и писане на функция IF във функцията COUNT.
Функцията COUNT е една от най-важните и широко използвани функции в MySQL и до голяма степен се използва за агрегиране на данни в зависимост от посочените условия за една или повече таблици.
Препоръчително четене
- MySQL ALTER TABLE - Как да добавя колона към таблица в MySQL
- Функции на MySQL CONCAT и GROUP_CONCAT с примери
- MySQL CREATE USER: Как да създам нов потребител в MySQL
- Урок за присъединяване на MySQL: Вътрешен, Външен, Кръстосан, Ляв, Десен и Аз
- MySQL LIKE - Урок с примери за синтаксис и употреба
- Клауза на MySQL GROUP BY - Урок с примери
- Функции на MySQL Substring и Substring_Index с примери
- MySQL Урок за създаване на изглед с примери за кодове