상세 컨텐츠

본문 제목

오라클 SQL 초반의 두 고비, hr 계정 select문 연습문제

SQL

by Sam_Park 2021. 12. 1. 23:18

본문

sql hr 계정

오라클 sql 수업을 듣고 있다. 개인적인 경험에서 기인한 난관과 팁이다. 경험하기로는 두 번의 고비가 있는 것 같다. 고비까지는 아닐 수 있지만 select 문을 쓰는 데에 있어서 적응이 꽤 필요한 녀석들이다.

 

 첫 번째로는 group by이다. 별 것 아닌 것 같지만, 처음에 개념을 잘못 잡을 경우, '이게 왜 안 되는 거지?' 하는 상황을 굉장히 많이 겪게 되고, 반쯤 포기하게 만들어버린다. 이 녀석의 문제는 내가 그룹화하지 않는 녀석도 group by 에 써야한다는 것이다. "select 문에 넣는다면, group by 에도 같이 입력한다" 나는 이 개념이 한참 안 잡히더랬다. 대학교 수업에서 잠깐 겪었을 때, 이 개념을 제대로 정립하지 않아서 한참을 헤맸다. 잘 배우신 분들은 안 헷갈리겠지만 애매하신 분들은 한 번 더 기억해주시길 바란다.

 

 두 번째는 distinct의 응용과 join 이다. 조인의 악명은 널리 알려진 것 같다. 선생님께서도 많이 헷갈리지 않냐고 걱정하셨다. 솔직히 이 두 구문은 크게 왕도가 있는지 모르겠다. 하지만 hr 계정의 regions, locations, countries 테이블까지 사용하는 문제를 한 두 개만 풀어보면 조인 정도는 어느정도 이해될 것 같다. 또, 선생님께서는 데이터를 다루는 것이니 구문을 완성하고, 다시보고, 어떻게 나올지 예측한 후 실행하라고 하셨지만, 그것도 하면서 빨리 많이 돌리는 것이 이 계정상에서, select 문에 한해서 더 좋을 것 같다. 

 

추가로, 수업 선생님 첫 날 숙제가 hr 계정 테이블, 컬럼 외우는 것이었다. 그리고 그건 앞으로도 계속 어느정도 필요하다고 본다. 다 외우고 숙지하면 가장 좋고, 조금 표시형식과 길이까진 아니더라도, 컬럼 이름, 데이터 타입 정도는 알아야 select 문을 작성할 수 있다. 자세히 알 수록 실수와 테이블 확인을 줄일 수 있다. 그리고 이를 위한 방법이 대학교 때 듣기로 sql table sheet 를 만들어 두는 것이다. 검색까지 해서 최대한 찾아보진 않았지만 필요한 정도로 엑셀파일로 만든 hr 계정의 table sheet 예시이다. (기억이 가물가물해서 table sheet 이름이 맞는지도 모르겠다.)

 

hr 계정은 총 7개의 테이블이 있다. employees, departments, locations, coutries, regions, jobs, job_history  이 중에서 수업에서는 앞에서부터 3개의 테이블만 사용했지만, 조인만 생각한다면 뒤에 테이블까지 사용하는 것이 더 흥미롭고 이해가 쉬울 것 같다. 여튼, 위에는 table 명, column 명, null 조건 data type, key 그리고 표시형식 예시까지 넣어두었다. 실제로 수업 중 연습 문제를 풀 때도 7문제 중 하나 정도는 표시 형식에 따라서 구문을 작성할 필요가 있는 문제가 있었다.

 

마지막으로, 수업 외로 만들어본 연습 문제이다. 오라클 sql 11g 버전으로 학습 중이시라면 심심풀이로 풀어보시는 것도 좋을 것 같다.

 

**
Q1. job_id 가 'IT_PROG'인 사람을 PROGRAMMER로 나오게 하고 이름과 부서번호, 고용일과 연봉을 출력하시오. 고용일을 오름차순으로 정렬하시오

***
Q2. 입사일자가 2005년 이후이고, 급여가 5000이상 9000이하이며, 직업에 CLERK가 들어가지 않는 직원의 직업, 이름, 입사일자 급여를 입사을 순으로 오름차순 정렬하시오.

****
Q3. 부서별, 직업별 인원수와 평균 급여를 출력하고 부서번호 오름차순으로 정렬하시오( HAVING BY 절로 서브쿼리 연습 가능)

****
Q4. 각 나라ID 와 나라별 급여의 평균, 최댓값, 최솟값을 출력하시오.


*****
Q5. 각 로케이션이 위치한 나라와 도시와 지역을 출력하고 해당하는 사원 수를 표시하시오.

 

 

P.S- 개인적으로는 아직 로직이 곧장 떠오르지 않는다면, select 와 from 까지 먼저쓰고 나서, 생각하면서 where, group 등을 써나가는 것도 나쁘지 않았던 것 같다.

'SQL' 카테고리의 다른 글

TIL-2022.05.13  (0) 2022.05.13
sql 튜닝 공부 책 구매  (0) 2022.05.13

관련글 더보기

댓글 영역