Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

단일 MySQL 쿼리 내에서 부울 필드 값을 계산하시겠습니까?

<시간/>

단일 쿼리 내에서 부울 필드 값을 계산하려면 CASE 문을 사용할 수 있습니다. 예제에 대한 데모 테이블을 만들어 보겠습니다. −

mysql> create table countBooleanFieldDemo
   -> (
   -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> StudentFirstName varchar(20),
   -> isPassed tinyint(1)
   -> );
Query OK, 0 rows affected (0.63 sec)

삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오.

쿼리는 다음과 같습니다 -

mysql> insert into countBooleanFieldDemo(StudentFirstName,isPassed) values('Larry',0);
Query OK, 1 row affected (0.12 sec)
mysql> insert into countBooleanFieldDemo(StudentFirstName,isPassed) values('Mike',1);
Query OK, 1 row affected (0.17 sec)
mysql> insert into countBooleanFieldDemo(StudentFirstName,isPassed) values('Sam',0);
Query OK, 1 row affected (0.21 sec)
mysql> insert into countBooleanFieldDemo(StudentFirstName,isPassed) values('Carol',1);
Query OK, 1 row affected (0.15 sec)
mysql> insert into countBooleanFieldDemo(StudentFirstName,isPassed) values('Bob',1);
Query OK, 1 row affected (0.16 sec)
mysql> insert into countBooleanFieldDemo(StudentFirstName,isPassed) values('David',1);
Query OK, 1 row affected (0.13 sec)
mysql> insert into countBooleanFieldDemo(StudentFirstName,isPassed) values('Ramit',0);
Query OK, 1 row affected (0.28 sec)
mysql> insert into countBooleanFieldDemo(StudentFirstName,isPassed) values('Chris',1);
Query OK, 1 row affected (0.20 sec)
mysql> insert into countBooleanFieldDemo(StudentFirstName,isPassed) values('Robert',1);
Query OK, 1 row affected (0.16 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다.

쿼리는 다음과 같습니다 -

mysql> select *from countBooleanFieldDemo;

다음은 출력입니다 -

+-----------+------------------+----------+
| StudentId | StudentFirstName | isPassed |
+-----------+------------------+----------+
| 1         | Larry            | 0        |
| 2         | Mike             | 1        |
| 3         | Sam              | 0        |
| 4         | Carol            | 1        |
| 5         | Bob              | 1        |
| 6         | David            | 1        |
| 7         | Ramit            | 0        |
| 8         | Chris            | 1        |
| 9         | Robert           | 1        |
+-----------+------------------+----------+
9 rows in set (0.00 sec)

다음은 단일 쿼리 내에서 부울 필드 값을 계산하는 쿼리입니다. -

mysql> select sum(isPassed= 1) as `True`, sum(isPassed = 0) as `False`,
   -> (
   -> case when sum(isPassed = 1) > 0 then sum(isPassed = 0) / sum(isPassed = 1)
   -> end
   -> )As TotalPercentage
   -> from countBooleanFieldDemo;

다음은 출력입니다 -

+------+-------+-----------------+
| True | False | TotalPercentage |
+------+-------+-----------------+
| 6    | 3     | 0.5000          |
+------+-------+-----------------+
1 row in set (0.00 sec)