영아일지

[프로그래머스] SQL- STRING, DATE 본문

디지털/코딩테스트

[프로그래머스] SQL- STRING, DATE

영아일지 2022. 11. 6. 13:34

오랜기간 보유한 동물(2)

SELECT B.ANIMAL_ID, B.NAME
FROM ANIMAL_INS AS A RIGHT JOIN ANIMAL_OUTS AS B
ON A.ANIMAL_ID = B.ANIMAL_ID
ORDER BY B.DATETIME - A.DATETIME DESC
LIMIT 2

<주의 > SELECT에서 칼럼 가져올 때 어디에서 가져올 건지 꼭 표기하기


카테고리 별 상품 개수 구하기

SELECT left(product_code,2) as category ,count(*) as products
from product
group by category

** LEFT함수 (데이터 , 숫자) : 데이터 왼쪽 순으로 숫자만큼 리턴

<-> RIGHT함수


조건별로 분류하여 주문상태 출력하기

SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE,'%Y-%m-%d')AS OUT_DATE,
CASE WHEN OUT_DATE IS NULL THEN '출고미정'
    WHEN OUT_DATE > DATE('2022-05-01') THEN '출고대기'
    WHEN OUT_DATE <= DATE('2022-05-01') THEN '출고완료'
END AS '출고여부'
FROM FOOD_ORDER
ORDER BY ORDER_ID

**조건문

1) CASE WHEN 조건 THEN 반환값,

               WHEN 조건 THEN 반환값,

               ELSE(생략가능)

    END

 

2) IF 조건

    반환값

    ELSE

    END


취소되지 않은 진료 예약 조회하기

SELECT A.APNT_NO, P.PT_NAME, P.PT_NO, D.MCDP_CD, D.DR_NAME , A.APNT_YMD 
FROM APPOINTMENT AS A 
JOIN DOCTOR AS D
ON A.MDDR_ID = D.DR_ID
LEFT JOIN PATIENT AS P
ON A.PT_NO = P.PT_NO
WHERE DATE_FORMAT(A.APNT_YMD ,'%Y-%m-%d') ='2022-04-13'
AND A.APNT_CNCL_YN = 'N' 
AND D.MCDP_CD = 'CS'
ORDER BY A.APNT_YMD;

**여러개의 테이블이 있을 때 JOIN하는 방법

  1. 세개의 테이블 중 PK가 같은 테이블과 필드를 고른다
  2. 가장 중첩된 테이블을 기준으로 JOIN한다