Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erhalten Sie mehrere Zählungen mit einer einzigen Abfrage in MySQL

Manchmal müssen Sie möglicherweise mehrere Zählungen in einer Abfrage auswählen, mehrere Zählungen für verschiedene Bedingungen abrufen oder mehrere Zählungen mit unterschiedlichen Kriterien auswählen. In diesem Artikel werden wir uns ansehen, wie man mehrere Zählungen mit einer einzigen Abfrage in MySQL erhält.


So erhalten Sie mehrere Zählungen mit einer einzigen Abfrage in MySQL

Nehmen wir an, Sie haben die folgende Tabelle product_sales(id, product, order_date, amount)

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 |
+------+---------+------------+--------+

Angenommen, Sie möchten die Gesamtanzahl, die Anzahl der Bestellungen für Produkt A und die Anzahl der Bestellungen für Produkt B in einer einzigen Abfrage.

Hier ist die SQL-Abfrage, um das Obige zu erreichen.

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 |
+-------------+---------+---------+

Sehen wir uns die obige Abfrage im Detail an.

count(*) zählt alle Zeilen in der Tabelle, um die Gesamtzahl zu erhalten.

count(if(product=’A’,1,null)) as A_count – Wenn wir eine IF-Bedingung innerhalb der Zählfunktion verwenden, werden nur Zeilen gezählt, bei denen die Bedingung wahr ist. Unsere Bedingung ist, Zeilen zu finden, in denen Produkt =A ist. MySQL zählt also nur die Zeilen, in denen Produkt A ist. Andernfalls wird es nicht gezählt (als NULL zugewiesen).

Bitte beachten Sie, dass es wichtig ist, null zu verwenden falls die IF-Bedingung fehlschlägt, werden auch nicht übereinstimmende Zeilen gezählt.

In ähnlicher Weise berechnen wir die Anzahl für Zeilen, in denen product=B

ist

Sie können das obige Ergebnis auch mit der CASE-Anweisung erhalten, wie unten gezeigt.

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 |
+-------------+---------+---------+

Benötigen Sie ein Reporting-Tool für MySQL? Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!