본문 바로가기
개발/Database

데이터의 그룹별 선택 (GROUP BY)

by BellOne4222 2024. 2. 3.

데이터의 그룹별 선택 (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 기준 데이터 + 정렬 방식 , 중복 되었을 때의 다음 우선순위 기준 데이터 + 정렬 방식

  • 결과적으로 최대값이 가장 큰 값을 기준으로 정렬되고, 가장 큰 값이 중복이 된다면, 사람 수가 적은 그룹이 우선순위가 되는 것이다.