Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać wiele zliczeń za pomocą pojedynczego zapytania w MySQL?

Czasami może być konieczne wybranie wielu zliczeń w jednym zapytaniu, uzyskanie wielu zliczeń dla różnych warunków lub wybranie wielu zliczeń z różnymi kryteriami. W tym artykule przyjrzymy się, jak uzyskać wiele zliczeń za pomocą pojedynczego zapytania w MySQL.


Jak uzyskać wiele zliczeń za pomocą jednego zapytania w MySQL

Załóżmy, że masz następującą tabelę sprzedaż_produktów(id, produkt, data_zamówienia, kwota)

mysql> create table product_sales(
     id int,
     product varchar(10),
     order_date date,
     amount int
     );

mysql> insert into product_sales(id, product, order_date, amount)
     values(1, 'A', '2021-01-01', 250),
     (2, 'B', '2021-01-02', 200),
     (3, 'A', '2021-01-03', 150),
     (4, 'B', '2021-01-04', 250);

mysql> select * from product_sales;
+------+---------+------------+--------+
| id   | product | order_date | amount |
+------+---------+------------+--------+
|    1 | A       | 2021-01-01 |    250 |
|    2 | B       | 2021-01-02 |    200 |
|    3 | A       | 2021-01-03 |    150 |
|    4 | B       | 2021-01-04 |    250 |
+------+---------+------------+--------+

Powiedzmy, że chcesz mieć całkowitą liczbę, liczbę zamówień produktu A i liczbę zamówień produktu B w jednym zapytaniu.

Oto zapytanie SQL do wykonania powyższego.

mysql> select count(*) as total_count,
        count(if(product='A',1,null)) as A_count,
        count(if(product='B',1,null)) as B_count
        from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       2 |
+-------------+---------+---------+

Przyjrzyjmy się szczegółowo powyższemu zapytaniu.

liczba(*) zlicza wszystkie wiersze w tabeli, aby uzyskać całkowitą liczbę.

count(if(product=’A’,1,null)) jako A_count – gdy użyjemy warunku IF w funkcji count, zliczy ona tylko wiersze, w których warunek jest prawdziwy. Naszym warunkiem jest dopasowanie wierszy, w których produkt =A. Tak więc MySQL liczy tylko te wiersze, w których produkt jest A. W przeciwnym razie nie jest liczony (przypisany jako NULL).

Pamiętaj, że ważne jest, aby użyć null w przypadku, gdy warunek JEŻELI nie powiedzie się, w przeciwnym razie liczone są nawet niepasujące wiersze.

Podobnie obliczamy liczbę wierszy, w których produkt=B

Możesz również uzyskać powyższy wynik za pomocą instrukcji CASE, jak pokazano poniżej.

mysql> select count(*) as total_count,
 count(case when product='A' then 1 else null end) as A_count,
 count(case when product='B' then 1 else null end) as B_count
 from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       2 |
+-------------+---------+---------+

Potrzebujesz narzędzia do raportowania dla MySQL? Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać ostatni rekord w każdej grupie w MySQL?

  2. Jak dołączyć zmienną PHP do instrukcji MySQL?

  3. Kiedy powinienem używać MySQLi zamiast MySQL?

  4. Wskazówki dotyczące monitorowania MySQL dla Moodle

  5. Jak utworzyć użytkownika w MySQL