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;