Resumo : neste tutorial, você aprenderá como usar o MySQL COUNT
IF
para contar valores em um conjunto com base em uma condição.
Introdução à função MySQL COUNT IF
A IF
função avalia uma expressão e retorna um valor dependendo se o resultado da expressão é verdadeiro ou falso.
Aqui está a sintaxe da IF
função:
IF(expression, value_if_true, value_if_false)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe, a IF
função retorna value_if_true
se a expressão for verdadeira ou value_if_false
se a expressão for falsa.
A COUNT()
função é uma função agregada que retorna o número de valores não nulos em um conjunto. Como a COUNT()
função aceita uma expressão, você pode usar the IF
para formar uma expressão como esta:
COUNT(IF(condition,1, NULL));
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe, COUNT()
retornará o número de valores que tornam a condição verdadeira. Observe que você pode usar outro valor diferente do número 1.
Exemplo MySQL COUNT IF
Primeiro, crie uma nova tabela chamada orders
com quatro colunas order_id
, customer_name
, order_date
e order_status
:
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
customer_name VARCHAR(50),
order_date DATE,
order_status VARCHAR(20)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, insira algumas linhas na orders
tabela com diferentes status de pedido:
INSERT INTO orders (customer_name, order_date, order_status)
VALUES
('Alice', '2023-01-15', 'Shipped'),
('Bob', '2023-02-20', 'Pending'),
('Charlie', '2023-03-10', 'Shipped'),
('David', '2023-04-05', 'Delivered'),
('Eve', '2023-05-12', 'Shipped');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, consulte os dados da orders
tabela:
SELECT * FROM orders;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----------+---------------+------------+--------------+
| order_id | customer_name | order_date | order_status |
+----------+---------------+------------+--------------+
| 1 | Alice | 2023-01-15 | Shipped |
| 2 | Bob | 2023-02-20 | Pending |
| 3 | Charlie | 2023-03-10 | Shipped |
| 4 | David | 2023-04-05 | Delivered |
| 5 | Eve | 2023-05-12 | Shipped |
+----------+---------------+------------+--------------+
5 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Por fim, conte os pedidos por status usando COUNT
IF
para contar o número de pedidos enviados:
SELECT
COUNT(
IF(order_status = 'Shipped', 1, NULL)
) AS shipped_orders_count
FROM
orders;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----------------------+
| shipped_orders_count |
+----------------------+
| 3 |
+----------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Existem três pedidos enviados.
Neste exemplo:
- O
IF(order_status = 'Shipped', 1, NULL)
retorna 1 seorder_status
forshipped
ouNULL
não. - O
COUNT
contará apenas 1 e ignorará oNULL
valor. Portanto, ele retorna a quantidade de pedidos enviados.
Da mesma forma, você pode usar COUNT
IF
para contabilizar o número de pedidos por status:
SELECT
COUNT( IF(order_status = 'Shipped', 1, NULL)) AS shipped_orders_count,
COUNT( IF(order_status = 'Pending', 1, NULL)) AS pending_orders_count,
COUNT( IF(order_status = 'Delivered', 1, NULL)) AS delivered_orders_count
FROM
orders;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----------------------+----------------------+------------------------+
| shipped_orders_count | pending_orders_count | delivered_orders_count |
+----------------------+----------------------+------------------------+
| 3 | 1 | 1 |
+----------------------+----------------------+------------------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Resumo
- Use o MySQL
COUNT
IF
para contar vários valores com base em uma condição específica.