개발/Database
데이터의 그룹별 선택 (GROUP BY)
BellOne4222
2024. 2. 3. 17:22
데이터의 그룹별 선택 (GROUP BY)
- 특정 belong 별로 인원수가 몇명인지 확인
- GROUP BY 컬럼명 : 컬럼명의 행 별로 구분 지을 때 사용
SELECT belong, COUNT(*) FROM student GROUP BY belong;
- 주의 할 점
SELECT name, belong, COUNT(*) FROM student GROUP BY belong;
- Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.student.name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 0.000 sec
- 그룹 지었을 때, name은 특정지을 수 없기 때문에 오류가 발생한다.
- 특정 belong 별로 인원수와 status값의 최대값을 알고싶고, status의 최대값에 따라 내림차순으로 정렬하고 중복되면 인원수를 기준으로 오름차순으로 정렬해서 반환
SELECT belong, COUNT(*), MAX(status) FROM student
GROUP BY belong
ORDER BY MAX(status) DESC, COUNT(*) ASC;
- ORDER BY 기준 데이터 + 정렬 방식 , 중복 되었을 때의 다음 우선순위 기준 데이터 + 정렬 방식
- 결과적으로 최대값이 가장 큰 값을 기준으로 정렬되고, 가장 큰 값이 중복이 된다면, 사람 수가 적은 그룹이 우선순위가 되는 것이다.