2
나는 다음 필드로 간단한 MySQL의 DB를 가지고 :어떻게 고유 값의 수를 표시하고 0을 포함 할 수 있습니까?
mysql> SELECT * from table;
+----+-----------+------+
| id | location | name |
+----+-----------+------+
| 1 | NJ | Gary |
| 2 | MN | Paul |
| 3 | AZ | |
| 4 | MI | Adam |
| 5 | NJ | |
| 6 | MN | Dave |
+----+-----------+------+
6 rows in set (0.00 sec)
나는 사람들이 이름이없는 사람을 제외하고, 각각의 상태에서 얼마나 많은 목록을 검색 할 필요가있다.
+----------+-------+
| location | count |
+----------+-------+
| AZ | 0 |
| MI | 1 |
| MN | 2 |
| NJ | 1 |
+----------+-------+
내가
SELECT location, COUNT(*) AS count FROM table WHERE name!='' GROUP BY location;
그러나, COUNT (*)는 제로 카운트를 제외과 가까이 할 수있어 : 즉, 나는 다음과 같은 결과를 재현하기 위해 노력하고있어. 나는
SELECT DISTINCT location, null as count from table;
에 의해 생성 된 테이블 만 가입 오른쪽 테이블에서 카운트 열을 밖으로 던져 LEFT과 함께 조인을 사용하려고 시도하고, 오른쪽은 제로 행 또는 실제 계산에 포함하지 않는 것 JOIN 몇몇 이유.
마치 내가 갖고 있지 않은 MySQL 명령이나 간단한 것이 있다고 생각합니다. 위치를 기준으로 두 테이블을 병합하는 방법을 찾아야합니다.
아무도 올바른 방향으로 나를 가리킬 수 있습니까?
Perfect! 고맙습니다! 나는 그런 식으로 그것에 접근하려고 생각하지 않았을 것입니다! 당신의 솔루션을 대답으로 표시하지만, 내가 (실패한) 합류를 시도하고 있던 두 테이블을 병합하는 것이 가능한지에 관해서는 여전히 궁금합니다. – aswanson
분명히 가능할 것입니다. 그러나 대답에서 쿼리의 매우 복잡한 버전 일 뿐이므로'NJ '에 대해'2'의 카운트를 얻지 않으려면'NULLIF '를 사용해야합니다. – Mchl