개발 일기

GROUP BY ? 본문

DB/mysql

GROUP BY ?

이건욱

GROUP BY을 통해서 데이터의 중복을 제거를 할수가 있습니다.

또한 ( COUNT , MIN , MAX , SUM , AVG ) 등등 같이 자주 사용이 됩니다.

 

[예시]

다음과 같이 이러면 LastName으로 중복된 값을 제거후 노출 합니다.

SELECT PersonId , FristName  , LastName
FROM persons
GROUP BY LastName;

//아래에서는 중복된 값을 제거 후 총 개수를 가져옵니다.

SELECT COUNT(*)
FROM persons
GROUP BY LastName;

 

[주의사항]

만약에 이런식으로 "SELECT list is not in GROUP BY clause and contains nonaggregated column" 에러가 나온다면

mysql 5.7 부터 only_full_group_by 추가가 되었으므로 해결 방안은 다음과 같이 있습니다.

- nonaggregated column 추가

- 서브 쿼리 사용

- ANY_VALUE 사용

- ONLY_FULL_GROUP_BY 설정 변경

 

Having ?

Having 절은 그룹화 해서 가져온 데이터에 조건을 설정을 할수 있습니다.

 

[예시]

다음은 Age가 11일때에만 조건을 포함시킵니다.

SELECT ANY_VALUE(PersonId) AS PersonId  , ANY_VALUE(FirstName) AS FirstName , ANY_VALUE(Age) AS Age
FROM persons
GROUP BY LastName
having Age = 11;

 

'DB > mysql' 카테고리의 다른 글

TRUNCATE + FOREIGN KEY  (0) 2020.05.18
Union ?  (0) 2020.05.02
MYSQL JOIN ?  (0) 2020.04.30
CREATE View?  (0) 2020.04.29
MYSQL Date Format ?  (0) 2020.04.28
Comments