2
mysql에 SUM() 함수과 함께 의심의 여지가 있습니다. 조건없이 SUM() 함수를 사용할 때 잘 작동합니다. 하지만 조건과 SUM() 함수를 사용하면 조건과 일치하는 레코드 수가 반환됩니다. 설명해주세요.mysql sum function issue
다음과 같이 네 개의 열이있는 한 명의 교사가 만들었습니다.
mysql> desc Teacher;
+--------------+-------------+------+-----+-------------------+
| Field | Type | Null | Key | Default |
+--------------+-------------+------+-----+-------------------+
| TeacherId | varchar(36) | NO | PRI | NULL |
| FirstName | varchar(50) | NO | | NULL |
| LastName | varchar(50) | NO | | NULL |
| SyncStatus | int(11) | NO | | NULL |
+--------------+-------------+------+-----+-------------------+
다음 기록에 포함되어 있습니다.
mysql> select * from Teacher;
+-----------+-----------+-----------+------------+
| TeacherId | FirstName | LastName | SyncStatus |
+-----------+-----------+-----------+------------+
| 001 | Sagar | Kapadia | 1 |
| 002 | Vishal | Chaudhari | 1 |
| 003 | Milan | Panchal | 1 |
| 004 | Jugal | Desai | 1 |
| 005 | Baburao | Apte | 1 |
| 006 | Jaya | Bacchan | 0 |
| 007 | Jaya | Bacchan | 2 |
| 008 | Jaya | Bacchan | 2 |
+-----------+-----------+-----------+------------+
8 rows in set (0.00 sec)
mysql> select TeacherId,FirstName,LastName,Concat(FirstName,' ',LastName) as FullName,SUM(SyncStatus) from Teacher having FullName like '_____ %';
+-----------+-----------+----------+---------------+-----------------+
| TeacherId | FIrstName | LastName | FullName | sum(SyncStatus) |
+-----------+-----------+----------+---------------+-----------------+
| 001 | Sagar | Kapadia | Sagar Kapadia | 9 |
+-----------+-----------+----------+---------------+-----------------+
1 row in set (0.00 sec)
는 그래서 동기화 상태 나에게 완벽한 합을 반환합니다. 하지만 조건과 SUM()을 사용하면 레코드 수를 returen.
mysql> select TeacherId,FIrstName,LastName,Concat(FirstName,' ',LastName) as FullName,sum(SyncStatus = 0) from Teacher having FullName like '_____ %';
+-----------+-----------+----------+---------------+---------------------+
| TeacherId | FIrstName | LastName | FullName | sum(SyncStatus = 0) |
+-----------+-----------+----------+---------------+---------------------+
| 001 | Sagar | Kapadia | Sagar Kapadia | 1 |
+-----------+-----------+----------+---------------+---------------------+
1 row in set (0.00 sec)
mysql> select TeacherId,FIrstName,LastName,Concat(FirstName,' ',LastName) as FullName,sum(SyncStatus = 1) from Teacher having FullName like '_____ %';
+-----------+-----------+----------+---------------+---------------------+
| TeacherId | FIrstName | LastName | FullName | sum(SyncStatus = 1) |
+-----------+-----------+----------+---------------+---------------------+
| 001 | Sagar | Kapadia | Sagar Kapadia | 5 |
+-----------+-----------+----------+---------------+---------------------+
1 row in set (0.00 sec)
mysql> select TeacherId,FIrstName,LastName,Concat(FirstName,' ',LastName) as FullName,sum(SyncStatus = 2) from Teacher having FullName like '_____ %';
+-----------+-----------+----------+---------------+---------------------+
| TeacherId | FIrstName | LastName | FullName | sum(SyncStatus = 2) |
+-----------+-----------+----------+---------------+---------------------+
| 001 | Sagar | Kapadia | Sagar Kapadia | 2 |
+-----------+-----------+----------+---------------+---------------------+
1 row in set (0.00 sec)
@Ankur에게 감사합니다. 이제 SUM() 함수가 어떻게 실행되는지 이해했습니다. 다시 한 번 당신 덕분에 .... – milanpanchal
그냥이 정확한 종류의 일을 만났습니다. 내가 원했던 것처럼 보였습니다 (액션이 한 달에 완료된 횟수를 반환하는 것은'SUM (확인 됨 = 1))'와'GROUP BY'를 사용하여). 그러나 이것이 내가 * 할 일이라고 생각하는지 확신 할 수 없었습니다. * 지금 알고 있습니다. :) – CD001