[문제]
학생 테이블생성
1. 각 동아리의 총인원 출력
2. 각동아리의 평균점수 출력
3. 각 동아리중에서 평균이 40이상인 동아리만 출력
[테이블 생성하기]
create table student(
sid int primary key, -- 학생번호
sname varchar(20) not null, --학생이름
club varchar(30), --소속 클럽
score int default 0 --학생점수
);
[데이터 추가]
insert into student values((select nvl(max(sid),0)+1 from student), '홍길동','미술부', 10);
insert into student values((select nvl(max(sid),0)+1 from student), '임꺽정','연극부', 20);
insert into student values((select nvl(max(sid),0)+1 from student), '아리','방송부', 30);
insert into student values((select nvl(max(sid),0)+1 from student), '티모','미술부', 60);
insert into student values((select nvl(max(sid),0)+1 from student), '가로쉬','미술부', 30);
insert into student values((select nvl(max(sid),0)+1 from student), '안두인','방송부', 90);
insert into student values((select nvl(max(sid),0)+1 from student), '티란데','연극부', 20);
insert into student values((select nvl(max(sid),0)+1 from student), '밀하우스','연극부', 70);
[1. 각 동아리의 총인원 출력]
- GROUP BY: 특정 칼럼을 그룹화 한다.
- count(칼럼)함수: 칼럼의 개수를 구한다.
- A as B : A를 B로 재정의한다.
select club, count(sname) as cnt from student group by club;
[2. 각 동아리의 평균점수 출력]
-avg(칼럼) : 칼럼의 평균을 구한다.
-ROUND("값", "자리수"): 값에 자리수까지 반올림하고 나머지는 삭제한다.
select club, count(sname) as cnt, round(avg(score), 1) as avg from student group by club;
[3. 각 동아리중에서 평균이 40이상인 동아리만 출력]
- HAVING: 특정 칼럼을 그룹화한 결과에 조건을 건다.
*WHERE은 그룹화하기 전의 조건!
select club, count(sname) as cnt, round(avg(score), 1) as avg from student group by club having avg(score)>40;
참고블로그
https://extbrain.tistory.com/56
[MySQL] 그룹화하여 데이터 조회 (GROUP BY)
▶MySQL 그룹화하여 데이터 조회 (GROUP BY) ▶설명 하나, 예를 들어보겠습니다. MySQL에서 유형별로 갯수를 가져오고 싶은데, 단순히 COUNT 함수로 데이터를 조회하면 전체 갯수만을 가져옵니다. 이렇
extbrain.tistory.com
'Project' 카테고리의 다른 글
Team5-2) (HTML,JS,JSP) [맛집 추천 사이트] 검색, 검색 리스트 (0) | 2022.04.14 |
---|---|
Team5-1)(AJAX, JS,HTML) [맛집 추천 사이트]회원가입 (0) | 2022.04.14 |
Team4) [HTML, CSS, JavaScript] 애플 페이지 분석 (0) | 2022.02.22 |
Team3) [JAVA,DBMS] 크롤링을 활용한 게임추천 사이트 (0) | 2022.02.21 |
Team1) 자판기 프로그램 (0) | 2022.01.11 |
댓글