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

Wiele zliczeń z różnymi warunkami w jednym zapytaniu MySQL

Możesz łatwo uzyskać wiele zliczeń z różnymi warunkami lub kryteriami w jednym zapytaniu w MySQL, używając instrukcji IF lub CASE. W tym artykule przyjrzymy się, jak uzyskać wiele zliczeń z wieloma warunkami w MySQL.


Wiele zliczeń z różnymi warunkami w pojedynczym zapytaniu MySQL

Oto kroki, aby uzyskać wiele zliczeń z różnymi warunkami w pojedynczym zapytaniu 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 |
+------+---------+------------+--------+

Załóżmy, że chcesz mieć całkowitą liczbę, liczbę zamówień produktu A i liczbę zamówień produktu B o wartości> 200 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' and amount>200,1,null)) as B_count
        from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       1 |
+-------------+---------+---------+

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 i ilość> 200.

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' and amount>200 then 1 else null end) as B_count
 from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       1 |
+-------------+---------+---------+

Przeczytaj bonus:Jak używać COALESCE w MySQL


Uzyskaj wiele zliczeń w Ubiq

Narzędzie Ubiq Reporting obsługuje wszystkie powyższe zapytania SQL i ułatwia wizualizację wyników SQL na różne sposoby. Umożliwia także tworzenie kokpitów i wykresów z danych MySQL. Oto zapytanie SQL, o którym mowa powyżej, w Ubiq.

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. Używanie MySql z Entity Framework 4 i Code-First Development CTP

  2. Jak działa funkcja LTRIM() w MySQL

  3. Strona internetowa z najlepszymi praktykami w wielu językach

  4. Oblicz decyla z częstotliwości w MySQL

  5. Jak przechowywać wiele opcji w jednej tabeli?