본문 바로가기

SQL/교육,실습

SQL데이터 분석 첫걸음 실습 (JOIN)

day7 는

데이터 합치기

기준으로 테이블 합치기

한쪽을 기준으로 테이블 합치기

다양한 방식으로 테이블 합치기

의 항목들을 데이터 합치기라는 주제로 교육을 마저 진행하였다.

오늘 배운 교육을 바탕으로 실습을 진행해 보겠다.

 

오늘은 데이터를 그룹화해서 통계를 내 볼 것이다.

주어지는 테이블은 이 테이블을 참고 할 것이다.

실습1

포켓몬 테이블과 능력치 테이블을 합쳐서 포켓몬 이름, 공격력, 방어력을 한번에 가져와 주세요. 이 때, 포켓몬 테이블에 있는 모든 포켓몬의 데이터를 가져와 주세요. 만약, 포켓몬의 능력치 데이터를 구할 수 없다면, NULL을 가져와도 좋습니다

mypokemon컬럼에 있는 name이 사용되니 그 방향대로 left join을 사용한다.

기본적 left join 문법은

SELECT [컬럼 이름]

FROM [테이블 A 이름]

LEFT JOIN [테이블 B 이름]

ON [테이블 A 이름].[컬럼 A 이름] = [테이블 B 이름].[컬럼 B 이름]

WHERE 조건식;

이다

on 절에서 같은 이름의 컬럼을 사용하여 묶는다.

실습1 쿼리문
실행 결과

실습2

포켓몬 테이블과 능력치 테이블을 합쳐서 포켓몬 번호와 이름을 한번에 가져와 주세요. 이 때, 능력치 테이블에 있는 모든 포켓몬의 데이터를 가져와 주세요. 만약, 포켓몬의 이름 데이터를 구할 수 없다면, NULL을 가져와도 좋습니다.

이번에도 실습1 과 같이 ability에 있는 넘버가 필요하므로 그 방향대로 right조인을 실시한다.

하지만 select 절에서 어떤 테이블의 number을 사용하는지 구별하기 위해서 앞에 테이블명을 쓰고

on절에서 같은 이름의 컬럼으로 묶는다.

실습2 쿼리문
실행 결과

실습3

내 포켓몬의 타입 별 키의 평균과 몸무게의 평균을 함께 가져와 주세요

group by를 사용하여 type기준으로 실습2와 같은 실습을 진행했다.

실습3 쿼리문
실행 결과

실습4

번호가 100 이상인 내 포켓몬들의 번호, 이름, 공격력, 방어력을 가져와 주세요

위의 실습들과 거의 동일하지만

where절을 이용하여 조건을 추가하였다.

실습4 쿼리문
실행 결과

 

실습5

공격력과 방어력의 합이 큰 순서대로 내 포켓몬들의 이름을 나열해 주세요

위의 실습들과 거의 동일하지만

order by절을 이용하여 순서를 나열하였다.

 

실습5 쿼리문
실행 결과

 

실습6

속도가 가장 빠른 내 포켓몬의 이름을 가져와 주세요

실습5와 거의 유사하지만

가장 빠른 1개의 행만 가져와야 하기 때문에

limit 를 이용하여 행수를 제한하였다.

실습6 쿼리문
실행 결과