study Log/Oracle , SQLdeveloper

[Oracle / SQLdeveloper] 03_SELECT(OPTION) 예제 (1번~10번)

manyMore 2023. 1. 17. 11:00

▼ 예제 파일과 테이블 스크립트

 

SELECT 기본 문법 및 연산자

함수

 

[춘대학시스템_워크북] 테이블 자료를 통해 예제를 풀어보았다.

※ 자료가 오래되어 문제 속 보기와는 다르다. 따라서 총 갯수가 맞는지 아닌지를 보고 내 답이 정답인지 파악 할 것!

 

▼ 정답 펼치기

더보기
-- 1. 학생이름과 주소지를 표시하시오.
-- 단, 출력 헤더는 "학생 이름", "주소지"로 하고, 정렬은 이름으로 오름차순 표시하도록 한다.
SELECT
	STUDENT_NAME    "학생 이름",
	STUDENT_ADDRESS "주소지"
FROM
	TB_STUDENT
ORDER BY
	STUDENT_NAME;

 

출력 헤더는 다양한 방법으로 작성 가능하다.

다만 주의할 점은, 헤더에 쓸 말에 특수기호가 들어간다거나, AVG와 같이 명령어를 별칭으로 사용하고 싶다거나, 띄어쓰기를 넣고 싶다면 꼭 AS 나 " "를 붙여야 한다. 그렇지 않으면 오류 남!

 

ORDER BY 는 오름차순 순서를 지정해주는 명령어. 끝에 DESC 를 붙이면 내림차순이 된다.

 

▼ 정답 펼치기

더보기
-- 2. 휴학 중인 학생들의 이름과 주민번호를 나이가 적은 순서로 화면에 출력하시오.
SELECT
	STUDENT_NAME,
	STUDENT_SSN
FROM
	TB_STUDENT
WHERE
	ABSENCE_YN = 'Y' /* 휴학 중인 학생들을 가려냄 */
ORDER BY /* 오늘 날짜와 주민번호 앞자리의 달 수를 비교하여 12로 나눈 후 나이를 도출 */
	MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(STUDENT_SSN, 1, 6), 'YYMMDD')) / 12;

 

▼ 정답 펼치기

더보기
-- 3. 주소지가 강원도나 경기도인 학생들 중 
-- 1900년대 학번을 가진 학생들의 이름과 학번, 주소를 이름의 오름차순으로 화면에 출력하시오.
-- 단, 출력헤더에는 "학생이름", "학번", "거주지 주소"가 출력되도록 한다.

SELECT
	STUDENT_NAME    "학생이름",
	STUDENT_NO      "학번",
	STUDENT_ADDRESS "거주지 주소"
FROM
	TB_STUDENT
WHERE
	STUDENT_NO LIKE '9%' /* 1900년대 학번을 가진 학생들은 학번 앞자리가 모두 9로 시작 */
AND	STUDENT_ADDRESS LIKE '%경기도%' OR STUDENT_ADDRESS LIKE '%강원도%'
/* 경기도와 강원도가 주소지인 학생들을 골라냄 */
ORDER BY
	STUDENT_NAME; /* 이름의 오름차순 */

 

▼ 정답 펼치기

더보기
-- 4.현재 법학과 교수 중 가장 나이가 많은 사람부터 이름을 확인할 수 있는
-- SQL 문장을 작성하시오.
-- (법학과의 '학과코드'는 학과 테이블(TB_DEPARTMENT)을 조회해서 찾아 내도록 하자)

SELECT
	PROFESSOR_NAME,
	PROFESSOR_SSN
FROM 
	TB_PROFESSOR
WHERE DEPARTMENT_NO = '005'
ORDER BY
	(MONTHS_BETWEEN(SYSDATE, TO_DATE(PROFESSOR_SSN, 1, 6), 'yymmdd') / 12) DESC;

 

▼ 정답 펼치기

더보기
-- 5. 2004년 2학기에 'C3118100' 과목을 수강한 학생들의 학점을 조회하려고 한다.
-- 학점이 높은 학생부터 표시하고, 학점이 같으면 학번이 낮은 학생부터 표시하는 구문을 작성해보시오.

SELECT
	   STUDENT_NO
	 , TO_CHAR(POINT, '9.00')
  FROM TB_GRADE
 WHERE TERM_NO = '200402'
   AND CLASS_NO = 'C3118100'
 ORDER BY POINT DESC, STUDENT_NO;

 

▼ 정답 펼치기

더보기
-- 6. 학생 번호, 학생 이름, 학과 이름을 학생 이름으로 오름차순 정렬하여 출력하는 SQL문을 작성하시오.
SELECT
	   STUDENT_NO
	 , STUDENT_NAME
	 , DEPARTMENT_NAME
  FROM TB_STUDENT
  JOIN TB_DEPARTMENT USING(DEPARTMENT_NO)
 ORDER BY STUDENT_NAME;

 

▼ 정답 펼치기

더보기
-- 7. 춘 기술대학교의 과목 이름과 과목의 학과 이름을 출력하는 SQL 문장을 작성하시오.
SELECT
		CLASS_NAME
	  , DEPARTMENT_NAME
  FROM TB_CLASS
  JOIN TB_DEPARTMENT USING (DEPARTMENT_NO);

 

▼ 정답 펼치기

더보기
-- 8. 과목별 교수 이름을 찾으려고 한다. 과목 이름과 교수 이름을 출력하는 SQL 문을 작성하시오.
SELECT
	   CLASS_NAME
     , PROFESSOR_NAME
  FROM TB_CLASS
  JOIN TB_CLASS_PROFESSOR USING (CLASS_NO)
  JOIN TB_PROFESSOR USING (PROFESSOR_NO);

 

▼ 정답 펼치기

더보기
-- 9. 8번의 결과 중 '인문사회' 계열에 속한 과목의 교수 이름을 찾으려고 한다.
-- 이에 해당하는 과목 이름과 교수 이름을 출력하는 SQL 문을 작성하시오.
SELECT
			 CLASS_NAME
		 , PROFESSOR_NAME
	FROM TB_CLASS
	JOIN TB_CLASS_PROFESSOR USING (CLASS_NO)
	JOIN TB_PROFESSOR P USING (PROFESSOR_NO)
	JOIN TB_DEPARTMENT D ON (P.DEPARTMENT_NO = D.DEPARTMENT_NO)
 WHERE CATEGORY = '인문사회';

▼ 정답 펼치기

더보기
-- 10. '음악학과' 학생들의 평점을 구하려고 한다.
-- 음악학과 학생들의 "학번", "학생 이름", "전체 평점"을 출력하는 SQL 문장을 작성하시오.
-- (단, 평점은 소수점 1자리까지만 반올림하여 표시한다.)
SELECT
			 STUDENT_NO 학번
		 , STUDENT_NAME "학생 이름"
		 , ROUND(AVG(POINT), 1) "전체 평점"
	FROM TB_STUDENT
	JOIN TB_DEPARTMENT USING (DEPARTMENT_NO)
	JOIN TB_GRADE USING (STUDENT_NO)
 WHERE DEPARTMENT_NAME = '음악학과'
 GROUP BY STUDENT_NO, STUDENT_NAME
 ORDER BY 1;