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

Как да получите няколко броя с една заявка в 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 |
+------+---------+------------+--------+

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

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

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

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

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

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

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

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

Можете също да получите горния резултат, като използвате оператор 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' then 1 else null end) as B_count
 from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       2 |
+-------------+---------+---------+

Нуждаете се от инструмент за отчитане за 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 Workbench:Грешка в заявката (1064):Синтактична грешка близо до „VISIBLE“ на ред 1

  2. Максимално време за изпълнение в phpMyadmin

  3. Как да конвертирате времето в часовата зона на iPhone устройството?

  4. Грешка при несинхронизирани команди на PHP

  5. Използвайте MySQL релационни бази данни във Fedora 14