기록

프로그래머스_조건에 부합하는 중고거래 상태 조회하기 본문

코딩테스트/SQL

프로그래머스_조건에 부합하는 중고거래 상태 조회하기

youngyin 2023. 9. 30. 20:00

문제

https://school.programmers.co.kr/learn/courses/30/lessons/164672

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이

날짜를 비교하는 방법은 MYsql, oracle이 다르다. MYSql은 입력된 문자열 형식이 날짜 형식이라면 문자열을 날짜로 자동변환한다. 따라서, oracle처럼 to_date 함수로 명시적 형변환 해주지 않아도 된다.

MYsql

[데이터 유형]

  • date type : 날짜 정보만을 저장
  • datetime type : 날짜 및 시간 정보를 저장

[날짜 비교 연산자]

  • = : 두 날짜가 같은지 확인
  • != 또는 <> : 두 날짜가 다른지 확인
  • < 또는 >  : 두 날짜의 크기를 비교
  • <= 또는 >=  : 두 날짜의 크기를 비교
SELECT * FROM your_table WHERE your_date_column >= '2023-09-24';

oracle

[데이터 유형]

  • date type : 날짜 정보만을 저장
  • timestamp type : 날짜 및 시간 정보를 저장

[날짜 비교 연산자]

  • = : 두 날짜가 같은지 확인
  • != 또는 <> : 두 날짜가 다른지 확인
  • < 또는 >  : 두 날짜의 크기를 비교
  • <= 또는 >=  : 두 날짜의 크기를 비교
SELECT * FROM your_table WHERE your_date_column >= TO_DATE('2023-09-24', 'YYYY-MM-DD');

코드

-- oracle
SELECT 
    BOARD_ID, 
    WRITER_ID, 
    TITLE, 
    PRICE, 
    CASE STATUS
    WHEN 'DONE' THEN '거래완료'
    WHEN 'RESERVED' THEN '예약중'
    WHEN 'SALE' THEN '판매중'
    ELSE NULL
    END AS STATUS
FROM USED_GOODS_BOARD
WHERE CREATED_DATE = TO_DATE('2022-10-05', 'YYYY-MM-DD')
ORDER BY BOARD_ID DESC

-- mySql
SELECT 
    BOARD_ID, 
    WRITER_ID, 
    TITLE, 
    PRICE, 
    CASE STATUS
    WHEN 'DONE' THEN '거래완료'
    WHEN 'RESERVED' THEN '예약중'
    WHEN 'SALE' THEN '판매중'
    ELSE NULL
    END AS STATUS
FROM USED_GOODS_BOARD
WHERE CREATED_DATE = '2022-10-05'
ORDER BY BOARD_ID DESC

마무리하면서

최근에 mariaDB에서 tibero로 시스템을 이관하는 작업이 생겨서, 기존에 많이 사용하던 oracle말고도 다른 DBMS에도 관심을 가지게 되었다. 각각의 DBMS의 장단점을 이해하고 적용할 수 있도록 공부해두어야겠다.

Comments