Mysql
 sql >> база данни >  >> RDS >> Mysql

Множество броя с различни условия в една MySQL заявка

Можете лесно да получите множество преброявания с различни условия или критерии в една заявка в MySQL, като използвате оператори IF или CASE. В тази статия ще разгледаме как да получим множество отчитания с множество условия в MySQL.


Множество броя с различни условия в една MySQL заявка

Ето стъпките за получаване на множество преброявания с различни условия в една MySQL заявка.

Да кажем, че имате следната таблица 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 |
+------+---------+------------+--------+

Да кажем, че искате общ брой, брой поръчки на продукт А и брой поръчки на продукт Б със сума> 200 в една заявка.

Ето SQL заявката за постигане на горното.

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

Нека разгледаме по-подробно горната заявка.

брой(*) брои всички редове в таблицата, за да даде общ брой.

брой(if(product=’A’,1,null)) като A_count – когато използваме условие IF във функцията за броене, то ще брои само редове, където условието е вярно. Нашето условие е да съвпадаме с редове, където продукт =A. Така MySQL отчита само онези редове, където продуктът е A. В противен случай не се отчита (присвоен като NULL).

Моля, имайте предвид, че е важно да използвате null в случай че условието IF се провали, в противен случай се отчитат дори несъвпадащи редове.

По подобен начин изчисляваме броя за редове, където продукт=B и сума> 200.

Можете също да получите горния резултат, като използвате оператор CASE, както е показано по-долу.

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

Бонус четене:Как да използвате COALESCE в MySQL


Вземете няколко броя в Ubiq

Инструментът за отчитане на Ubiq поддържа всички горепосочени SQL заявки и улеснява визуализирането на SQL резултатите по различни начини. Той също така ви позволява да създавате табла за управление и диаграми от MySQL данни. Ето споменатата по-горе SQL заявка в Ubiq.

Нуждаете се от инструмент за отчитане за MySQL? Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте го днес!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте MySQL потребител на Linux чрез командния ред

  2. Грешка 1022 - Не мога да пиша; дублиран ключ в таблицата

  3. Как да тествате PHP MySQL връзката с базата данни с помощта на скрипт

  4. изберете count(*) от таблицата на mysql в php

  5. Има ли MySQL опция/функция за проследяване на историята на промените в записи?