study Log/Oracle , SQLdeveloper
[Oracle / SQLdeveloper] 03_SELECT(OPTION) 예제 (11번~19번)
manyMore
2023. 1. 17. 17:20
▼ 예제 파일과 테이블 스크립트
SELECT 기본 문법 및 연산자
함수
[춘대학시스템_워크북] 테이블 자료를 통해 예제를 풀어보았다.
※ 자료가 오래되어 문제 속 보기와는 다르다. 따라서 총 갯수가 맞는지 아닌지를 보고 내 답이 정답인지 파악 할 것!



▼ 정답 확인 ▽
더보기
-- 11. 학번이 A313047인 학생이 학교에 나오고 있지 않다.
-- 지도 교수에게 내용을 전달하기 위한 학과 이름, 학생 이름과 지도 교수 이름이 필요하다.
-- 이때 사용할 SQL 문을 작성하시오.
-- 단, 출력헤더는 "학과이름", "학생이름", "지도교수이름"으로 출력되도록 한다.
SELECT
DEPARTMENT_NAME "학과이름"
, STUDENT_NAME "학생이름"
, PROFESSOR_NAME "지도교수이름"
FROM TB_STUDENT
JOIN TB_DEPARTMENT USING (DEPARTMENT_NO)
JOIN TB_PROFESSOR ON (COACH_PROFESSOR_NO = PROFESSOR_NO)
WHERE STUDENT_NO = 'A313047';

▼ 정답 확인 ▽
더보기
-- 12. 2007년에 '인간관계론' 과목을 수강한 학생을 찾아 학생이름과 수강학기를 표시하는 SQL 문장을 작성하시오.
SELECT
S.STUDENT_NAME
, G.TERM_NO TERM_NAME
FROM TB_STUDENT S
JOIN TB_GRADE G ON (G.STUDENT_NO = S.STUDENT_NO)
JOIN TB_CLASS USING (CLASS_NO)
WHERE G.TERM_NO LIKE '2007%'
AND CLASS_NAME = '인간관계론';

▼ 정답 확인 ▽
더보기
-- 13. 예체능 계열 과목 중 과목 담당교수를 한 명도 배정받지 못한 과목을 찾아
-- 그 과목 이름과 학과 이름을 출력하는 SQL 문장을 작성하시오.
SELECT
CLASS_NAME
, DEPARTMENT_NAME
FROM TB_CLASS
JOIN TB_DEPARTMENT USING (DEPARTMENT_NO)
LEFT JOIN TB_CLASS_PROFESSOR USING (CLASS_NO)
WHERE CATEGORY = '예체능' AND PROFESSOR_NO IS NULL;

▼ 정답 확인 ▽
더보기
-- 14. 춘 기술대학교 서반아어학과 학생들의 지도교수를 게시하고자 한다.
-- 학생이름과 지도교수 이름을 찾고 만일 지도 교수가 없는 학생일 경우
-- "지도교수 미지정"으로 표시하도록 하는 SQL문을 작성하시오.
-- 단, 출력헤더는 "학생이름", "지도교수"로 표시하며 고학번 학생이 먼저 표시되도록 한다.
SELECT
S.STUDENT_NAME "학생이름"
, NVL(P.PROFESSOR_NAME, '지도교수 미지정') "지도교수"
FROM TB_STUDENT S
LEFT JOIN TB_PROFESSOR P ON (P.PROFESSOR_NO = S.COACH_PROFESSOR_NO)
JOIN TB_DEPARTMENT D ON (D.DEPARTMENT_NO = S.DEPARTMENT_NO)
WHERE DEPARTMENT_NAME = '서반아어학과'
ORDER BY STUDENT_NO;

▼ 정답 확인 ▽
더보기
-- 15. 휴학생이 아닌 학생 중 평점이 4.0 이상인 학생을 찾아
-- 그 학생의 학번, 이름, 학과이름, 평점을 출력하는 SQL 문을 작성하시오.
SELECT
S.STUDENT_NO 학번
, S.STUDENT_NAME 이름
, D.DEPARTMENT_NAME "학과 이름"
, ROUND(AVG(POINT),8) 평점
FROM TB_STUDENT S
JOIN TB_DEPARTMENT D ON (D.DEPARTMENT_NO = S.DEPARTMENT_NO)
JOIN TB_GRADE G ON (G.STUDENT_NO = S.STUDENT_NO)
WHERE ABSENCE_YN = 'N'
GROUP BY S.STUDENT_NO, S.STUDENT_NAME, D.DEPARTMENT_NAME
HAVING ROUND(AVG(POINT), 8) >= 4.0
ORDER BY 학번;

▼ 정답 확인 ▽
더보기
-- 16. 환경조경학과 전공과목들의 과목별 평점을 파악할 수 있는 SQL 문을 작성하시오.
SELECT
CLASS_NO
, CLASS_NAME
, ROUND(AVG(POINT), 8) "AVG(POINT)"
FROM TB_CLASS
JOIN TB_GRADE USING (CLASS_NO)
JOIN TB_DEPARTMENT USING (DEPARTMENT_NO)
WHERE DEPARTMENT_NAME = '환경조경학과' AND CLASS_TYPE LIKE '전공%'
GROUP BY CLASS_NO, CLASS_NAME
ORDER BY CLASS_NO;

▼ 정답 확인 ▽
더보기
-- 17. 춘 기술대학교에 다니고 있는 최경희 학생과 같은 과 학생들의 이름과 주소를 출력하는 SQL문을 작성하시오.
SELECT
STUDENT_NAME
, STUDENT_ADDRESS
FROM TB_STUDENT
WHERE DEPARTMENT_NO = (SELECT
DEPARTMENT_NO
FROM TB_STUDENT
WHERE STUDENT_NAME = '최경희')
ORDER BY STUDENT_NAME DESC;

▼ 정답 확인 ▽
더보기
-- 18. 국어국문학과에서 총 평점이 가장 높은 학생의 이름과 학번을 표시하는 SQL문을 작성하시오.
SELECT
STUDENT_NO
, STUDENT_NAME
FROM (SELECT
STUDENT_NO
, STUDENT_NAME
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 AVG(POINT) DESC)
WHERE ROWNUM = 1;

▼ 정답 확인 ▽
더보기
-- 19. 춘 기술대학교의 "환경조경학과"가 속한 같은 계열 학과들의
-- 학과 별 전공과목 평점을 파악하기 위한 적절한 SQL 문을 찾아내시오.
-- 단, 출력헤더는 "계열 학과명", "전공평점"으로 표시되도록 하고, 평점은 소수점 한 자리까지만 반올림하여 표시되도록 한다.
SELECT
DEPARTMENT_NAME "계열 학과명"
, ROUND(AVG(POINT), 1) "전공평점"
FROM TB_DEPARTMENT
JOIN TB_CLASS USING(DEPARTMENT_NO)
JOIN TB_GRADE USING(CLASS_NO)
WHERE CATEGORY = (SELECT
CATEGORY
FROM TB_DEPARTMENT
WHERE DEPARTMENT_NAME = '환경조경학과'
)
AND CLASS_TYPE LIKE '전공%'
GROUP BY DEPARTMENT_NAME, CATEGORY
ORDER BY "전공평점" DESC;