Programmers-SQLpractice_230125

ouneno·2023년 1월 25일
0

Programmers-SQL

목록 보기
4/26

2023-01-25 수요일


1. 조건에 맞는 도서 리스트 출력하기


문제

  1. BOOK_ID, PUBLISHED_DATE 출력
  2. 2021년에 출판
  3. '인문' 카테고리
  4. 출판일 기준 오름차순

1. BOOK 테이블 전체 조회

SELECT * FROM BOOK


2. BOOK_ID, PUBLISHED_DATE 출력

SELECT  BOOK_ID
        , TO_CHAR (PUBLISHED_DATE, 'YYYY-MM-DD')
FROM BOOK


3. 출판연도 : 2021년

SELECT  BOOK_ID
        , TO_CHAR (PUBLISHED_DATE, 'YYYY-MM-DD')
FROM BOOK
WHERE PUBLISHED_DATE    
    BETWEEN TO_DATE('2021-01-01', 'YYYY-MM-DD') 
        AND TO_DATE('2021-12-31', 'YYYY-MM-DD') 


4. 카테고리 : 인문

SELECT  BOOK_ID
        , TO_CHAR (PUBLISHED_DATE, 'YYYY-MM-DD')
FROM BOOK
WHERE PUBLISHED_DATE    
    BETWEEN TO_DATE('2021-01-01', 'YYYY-MM-DD') 
        AND TO_DATE('2021-12-31', 'YYYY-MM-DD') 
        AND CATEGORY = '인문'


5. 오름차순 : 출판일자 기준

SELECT  BOOK_ID
        , TO_CHAR (PUBLISHED_DATE, 'YYYY-MM-DD')
FROM BOOK
WHERE PUBLISHED_DATE    
    BETWEEN TO_DATE('2021-01-01', 'YYYY-MM-DD') 
        AND TO_DATE('2021-12-31', 'YYYY-MM-DD') 
        AND CATEGORY = '인문'
ORDER BY PUBLISHED_DATE ASC


WHERE절에서의 DATE 일자 조건주기

XXXX-XX-XX 일자부터 YYYY-YY-YY 일자 까지의 조회
BETWEEN a AND b

WHERE 컬럼명 BETWEEN TO_DATE('XXXX-XX-XX', 'YYYY-MM-DD')
				AND TO_DATE('YYYY-YY-YY', 'YYYY-MM-DD')

Example 1. 1990년도 출생일자를 구하라 [컬럼명 : birth]

WHERE birth	BETWEEN TO_DATE('1990-01-01', 'YYYY-MM-DD')
			AND TO_DATE('1990-12-31', 'YYYY-MM-DD')

Example 2. 1993년 05월생을 출력하라 [컬럼명 : birth]

WHERE birth BETWEEN TO_DATE('1993-05-01', 'YYYY-MM-DD')
			AND TO_DATE('1993-05-31', 'YYYY-MM-DD')

2. 상위 N개 레코드


문제

  1. NAME 출력
  2. 가장 먼저 들어온 동물
  3. 1개만 출력

1. ANIMAL_INS 전체 테이블 출력

SELECT * FROM ANIMAL_INS


2. NAME 출력

SELECT NAME
FROM ANIMAL_INS


3. 보호시작일이 가장 빠른 순서대로 출력

SELECT  NAME
FROM ( SELECT * FROM ANIMAL_INS ORDER BY DATETIME ASC )


4. 상위 1개만 출력

SELECT  NAME
FROM ( SELECT * FROM ANIMAL_INS ORDER BY DATETIME ASC )
WHERE ROWNUM <= 1


SubQuery 사용

Oracle N개의 데이터 출력
(1) 우선, 데이터 정렬 => SubQuery 사용

SELECT 	empNo
		, eName
        , sal
FROM ( SELECT 	empNo
				, eName
                , sal
       FROM emp
       ORDER BY sal DESC
     )

(2) 원하는 개수만큼 데이터를 추출 => ROWNUM

SELECT 	empNo
		, eName
        , sal
FROM ( SELECT 	empNo
				, eName
                , sal
       FROM emp
       ORDER BY sal DESC
     )
WHERE ROWNUM <= 3

3. 조건에 맞는 회원수 구하기


문제

  1. 몇 명인지 출력
  2. 2021년에 가입한 회원
  3. 나이 20세 이상 29세 이하

1. ANIMAL_INS 전체 테이블 출력

SELECT * FROM USER_INFO


2. 2021년에 가입한 회원 (subQuery 사용)

SELECT *
FROM (
        SELECT  AGE 	** AGE 출력을 요함으로 인하여 해당 컬럼 기재
                ,JOINED 
        FROM USER_INFO 
        WHERE JOINED    BETWEEN TO_DATE ('2021-01-01', 'YYYY-MM-DD')
                        AND TO_DATE ('2021-12-31', 'YYYY-MM-DD')    )


3. 나이 20세 이상 29세 이하

SELECT *
FROM (
        SELECT  AGE
                , JOINED
        FROM USER_INFO 
        WHERE JOINED    BETWEEN TO_DATE ('2021-01-01', 'YYYY-MM-DD')
                        AND TO_DATE ('2021-12-31', 'YYYY-MM-DD')    )
WHERE AGE BETWEEN 20 AND 29


4. 몇 명인지 출력 COUNT(*) 함수 사용

profile
지속적인 성장을 추구하는 새싹 개발자입니다🌱

0개의 댓글