본문 바로가기

Data Science/SQLP

[프로그래머스] 6.String, Date

반응형

날짜와 시간을 다루는 방법

TO_CHAR

TO_NUMBER

 

-> TO_NUMBER(TO_CHAR( , ) AS ~

-> WHERE ~ BETWEEN A AND B


날짜 범위 검색

 WHERE hiredate BETWEEN TO_DATE('1981-01-01', 'YYYY-MM-DD') 
                   AND TO_DATE('1981-12-31', 'YYYY-MM-DD')

 

-숫자 범위 일 경우

-> 범위에 ' ' 없이 지정

 

-문자 범위 일 경우

-> 범위에 ' '추가해 지정


1. 루시와 엘라 찾기

-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy','Ella','Pickle','Rogan','Sabrina','Mitty')
ORDER BY ANIMAL_ID

 

2. 이름에 el이 들어가는 동물 찾기

-- 코드를 입력하세요
-- 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요.
--이때 결과는 이름 순으로 조회해주세요.
--단, 이름의 대소문자는 구분하지 않습니다. -> UPPER(), LOWER()
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE ANIMAL_TYPE='Dog' AND LOWER(NAME) LIKE '%el%'AND UPPER(NAME) LIKE '%EL%'
ORDER BY NAME

 

3. 중성화 여부 파악하기

-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME,
CASE WHEN SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%' THEN 'O' 
          ELSE 'X'
          END AS 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 

-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME,
CASE WHEN SEX_UPON_INTAKE LIKE('%Neutered%')
OR SEX_UPON_INTAKE LIKE('%Spayed%') THEN 'O'
ELSE 'X'
END AS "중성화"
FROM ANIMAL_INS INS
ORDER BY ANIMAL_ID;

->한글 입력시 ""이거나, 아예 붙이지 않는다.

 

4. 오랜 기간 보호한 동물 (2)

-> WHERE ROWNUMS<=n

-> FETCH FIRST n ROWS ONLY

 

SELECT OUTS.ANIMAL_ID, OUTS.NAME
FROM ANIMAL_INS INS, ANIMAL_OUTS OUTS
WHERE INS.ANIMAL_ID = OUTS.ANIMAL_ID
ORDER BY OUTS.DATETIME - INS.DATETIME DESC
FETCH FIRST 2 ROWS ONLY

 

-- 코드를 입력하세요
SELECT A.ANIMAL_ID, A.NAME
FROM (SELECT OUTS.ANIMAL_ID, OUTS.NAME
    FROM ANIMAL_INS INS
      LEFT JOIN
      ANIMAL_OUTS OUTS
     ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
     WHERE OUTS.ANIMAL_ID IS NOT NULL 
     ORDER BY OUTS.DATETIME-INS.DATETIME DESC) A
WHERE ROWNUM<=2;

-> ORDER BY가 가장 마지막에 처리하므로, 일반적인 ROWNUM으로 처리하려면, 서브쿼리 내에서 정렬 수행필요

 

-- 코드를 입력하세요
SELECT A.ANIMAL_ID, A.NAME
FROM (SELECT OUTS.ANIMAL_ID, OUTS.NAME
    FROM ANIMAL_INS INS,ANIMAL_OUTS OUTS
     WHERE INS.ANIMAL_ID = OUTS.ANIMAL_ID
     ORDER BY OUTS.DATETIME-INS.DATETIME DESC) A
WHERE ROWNUM<=2;

-> FROM 조인으로 가능

 

 

5. DATETIME에서 DATE로 형 변환

-- 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜1를 조회하는 SQL문을 작성
--이때 결과는 아이디 순으로 조회
SELECT ANIMAL_ID, NAME, TO_CHAR(DATETIME, 'YYYY-MM-DD') 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
반응형

'Data Science > SQLP' 카테고리의 다른 글

[ORACLE] 트리거 만들기  (0) 2022.05.02
[ORACLE] sqlplus 접속 문제 해결  (0) 2022.04.12
[프로그래머스] 5. JOIN  (0) 2022.03.07
[프로그래머스] 4. IS NULL  (0) 2022.03.07
[프로그래머스] 3. GROUP BY  (0) 2022.03.07