2017년 5월 23일 화요일

MY-SQL : 그룹지어서 카운트 세기

아래처럼 group by후 조회되는 항목의 count를 알아 내려고 했는데 잘 되지 않았다. 

SELECT 
COUNT(*) AS CNT 
FROM log_ymdh 
WHERE 1 = 1 
GROUP BY Y, M 

+-----+ 
| CNT | 
+-----+ 
| 100 | 
|  84 | 
|  63 | 
|  60 | 
|  61 | 
|  57 | 
| 110 | 
+-----+ 
7 rows in set (0.00 sec) 

원하는 결과 값은 쿼리 결과물 총 행수에 해당하는 7 이어야 한다. 
이 경우 group by 이전의 cnt 값이 나왔는데 
my-sql에서 서브쿼리가 되지 않아서 group by로는 더이상 이 문제를 해결할 수 없었다. 



아래는 distinct를 이용해서 성공한 쿼리문이다. 

SELECT 
COUNT(DISTINCT Y, M) AS CNT 
FROM log_ymdh 
WHERE 1 = 1 

+-----+ 
| CNT | 
+-----+ 
|  7 | 
+-----+ 
1 row in set (0.00 sec)