데이터의 그룹별 선택 (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 기준 데이터 + 정렬 방식 , 중복 되었을 때의 다음 우선순위 기준 데이터 + 정렬 방식
- 결과적으로 최대값이 가장 큰 값을 기준으로 정렬되고, 가장 큰 값이 중복이 된다면, 사람 수가 적은 그룹이 우선순위가 되는 것이다.
'개발 > Database' 카테고리의 다른 글
정규화(Normalization) (0) | 2024.02.04 |
---|---|
키(Primary Key, Foreign Key)의 종류와 함수적 종속 (0) | 2024.02.04 |
문자열을 다루는 내부함수 사용하기 (RIGHT, SUBSTRING_INDEX, UPPER) (0) | 2024.02.03 |
내부 함수를 사용하기 (SUM, COUNT, AVG) (0) | 2024.02.03 |
생성문 보기 (SHOW) (0) | 2024.02.02 |