MySQL CONTAGEM SE

Resumo : neste tutorial, você aprenderá como usar o MySQL COUNT IFpara contar valores em um conjunto com base em uma condição.

Introdução à função MySQL COUNT IF

A IFfunção avalia uma expressão e retorna um valor dependendo se o resultado da expressão é verdadeiro ou falso.

Aqui está a sintaxe da IFfunção:

IF(expression, value_if_true, value_if_false)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe, a IFfunção retorna value_if_truese a expressão for verdadeira ou value_if_falsese 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 IFpara 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 orderscom quatro colunas order_id, customer_name, order_datee 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 orderstabela 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 orderstabela:

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 IFpara 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 se order_statusfor shippedou NULLnão.
  • O COUNTcontará apenas 1 e ignorará o NULLvalor. Portanto, ele retorna a quantidade de pedidos enviados.

Da mesma forma, você pode usar COUNT IFpara 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 IFpara contar vários valores com base em uma condição específica.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *