mysql count count distinct with examples
Дізнайтеся про використання різних форм функції MySQL COUNT на прикладах:
COUNT - це проста сукупна функція, але дуже ефективна та широко використовувана. Дуже простими словами, він використовується для підрахунку кількості рядків щодо заданого запиту та критеріїв SELECT.
Цей підручник пояснить синтаксис та використання простих COUNT, COUNT з умовами, COUNT з DISTINCT, COUNT з GROUP BY тощо.
Що ви дізнаєтесь:
Різні типи MySQL COUNT
Тип | Опис | Синтаксис |
---|---|---|
РАХУВАТИ(*) | Функція COUNT (*) повертає значення no. рядків, отриманих за допомогою оператора SELECT, включаючи рядки, що містять значення NULL та Duplicate | ВИБЕРІТЬ КОЛИЧКУ (*) ВІД {tableName} |
COUNT (вираз) | COUNT (вираз) буде враховувати значення, де вираз не є нульовим. Вираз може бути чимось простим, як назва стовпця, або складним виразом, таким як функція IF. | ВИБЕРІТЬ КІЛЬКУ (вираз) із таблиці {tableName} |
COUNT (ВИРАЗНИЙ вираз) | COUNT (вираз DISTINCT) - ключове слово DISTINCT призведе до відліку лише унікальних ненульових значень проти виразу. Наприклад - COUNT (DISTINCT customerName) - буде враховувати лише рядки, що мають різні значення для імені клієнта | ВИБЕРІТЬ КІЛЬКУ (вираз DISTINCT) із таблиці {tableName} |
MySQL COUNT Приклади
Дані тесту
Ми б використовували наступні таблиці та дані для прикладів функції MySQL COUNT.
Таблиці:
# 1) Product_Details
Зберігає деталі різної продукції в магазині
- product_id - INT
- product_name - VARCHAR
- ціна - ДЕКІМАЛЬНА
- category_id - INT (ІНОЗЕМНИЙ КЛЮЧ - ідентифікатор таблиці Category_Details)
# 2) Подробиці_ категорії:
- ідентифікатор категорії: INT
- назва_категорії: VARCHAR
Давайте створимо таблиці та вставимо фіктивні дані, використовуючи запити нижче:
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 Table
Таблиця_деталей категорії
Простий COUNT
У цьому розділі ми побачимо функцію COUNT найбільш спрощеним способом.
Ми використаємо COUNT, щоб повернути кількість рядків без жодних перевірок NULL або DISTINCT.
SELECT COUNT(*) FROM product_details;
Вихід:
РАХУВАТИ(*) |
---|
одинадцять |
З наведеним вище запитом ми просто отримаємо кількість рядків, що повертаються до оператора select.
КОЛОК З УМОВАМИ
Тепер ми будемо використовувати функцію COUNT із умовами або значеннями стовпців.
Приклад: Припустимо, ми хочемо порахувати ні. рядків, де для імен продуктів немає ненульових значень.
Ми можемо додати product_name (або будь-яке назва стовпця) як вираз у функції COUNT, що призведе до підрахунку рядків, що мають NON NULL row_name product_name.
SELECT COUNT(product_name) FROM product_details;
У цьому випадку результат буде 11 (оскільки всі тестові дані вже мають значення для стовпця product_name)
Вихід:
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 поверне кількість усіх рядків, що мають НЕ НУЛЕВО ім'я продукту.
Оскільки ми вставили рядок із 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, що представляє загальний номер. ідентифікаторів категорії у таблиці product_details.
ПОДРАХУВАТИ З ГРУПОЮ НА
Давайте розглянемо приклад, коли ми хочемо використовувати COUNT разом із GROUP BY. Це важлива комбінація, коли ми можемо отримати COUNT щодо згрупованого стовпця та проаналізувати дані залежно від різних значень цільового згрупованого стовпця.
Наприклад: Знайдіть ні. товарів щодо кожної категорії з таблиці product_details.
SELECT category_id, COUNT(*) FROM product_details GROUP BY category_id;
ідентифікатор категорії | РАХУВАТИ(*) |
---|---|
1 | 7 |
два | 1 |
4 | 1 |
5 | два |
Як ми бачимо вище, проти кожного ідентифікатора категорії ідентифікатор стовпця (*) представляє кількість рядків, що належать кожному ідентифікатору категорії.
ПОДРАХУЙТЕ З ЯКЩО
Давайте подивимось приклад використання умови IF всередині функції COUNT. Ми можемо розмістити вираз IF всередині функції COUNT і встановити значення NULL для помилкової умови та будь-яке ненульове значення для істинної умови.
Кожне значення 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 застосовується до no. рядків, його можна використовувати з будь-якою комбінацією запиту, що працює в одній таблиці або декількох таблицях за допомогою 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 |
Часті запитання
Q # 1) Як я можу використовувати функцію COUNT в MySQL?
Відповідь: Функція COUNT - це сукупна функція, яку можна використовувати 3 способами.
- РАХУВАТИ(*) - Це підрахувало б усі рядки, повернені SELECT QUERY.
- COUNT (вираз) - Це врахувало б усі значення NON NULL для виразу.
- COUNT (вираз DISTINCT) - Це врахувало б усі значення NON NULL та UNIQUE у виразі.
Q # 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 JOIN: Внутрішній, Зовнішній, Хрестовий, Лівий, Правий та Я
- MySQL LIKE - Підручник із прикладами синтаксису та використання
- Застереження MySQL GROUP BY - Підручник із прикладами
- Функції підрядків MySQL та Substring_Index із прикладами
- Підручник із створення перегляду MySQL із прикладами коду