본문 바로가기

Coding Tests/programmers

SQL 고득점 Kit ( 3월에 태어난 여성 회원 목록 출력하기 )

 

< 문제 >

 

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

 

프로그래머스

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

programmers.co.kr

 

 

< FAIL >

 

SELECT MEMBER_ID,MEMBER_NAME,GENDER,DATE_OF_BIRTH FROM MEMBER_PROFILE WHERE TLNO NOT IN('NULL') AND GENDER = 'W' AND MONTH(DATE_OF_BIRTH) = "3" ORDER BY MEMBER_ID;

 

MEMBER_ID MEMBER_NAME GENDER DATE_OF_BIRTH
seoyeons@naver.com 박서연 W 1992-03-16 00:00:00

 

DATE_OF_BIRTH 칼럼 값에 시간 값이 더해져 추출된 것이 문제라고 생각되어 해당 부분이 출력되지 않도록 수정하였습니다. 

 

 

< PASS >

 

SELECT MEMBER_ID,MEMBER_NAME,GENDER,DATE_FORMAT(DATE_OF_BIRTH,'%Y-%m-%d')DATEONLY FROM MEMBER_PROFILE WHERE TLNO NOT IN('NULL') AND GENDER = 'W' AND MONTH(DATE_OF_BIRTH) = "3" ORDER BY MEMBER_ID;

 

위의 코드로 해당 문제를 PASS 하였습니다. 하지만 개선 사항이 존재하는데요, 바로 DATEONLY  부분입니다. 처음에는 이또한 문법의 일부 즉, 함수라고 생각하였는데, 단순 별칭이었습니다. 그래서 아래와 같이 AS를 붙여 출력시 보이는 칼럼이 DATE_OF_BIRTH 가 되도록 작성해 줍니다. 

 

SELECT MEMBER_ID,MEMBER_NAME,GENDER,DATE_FORMAT(DATE_OF_BIRTH,'%Y-%m-%d') AS DATE_OF_BIRTH FROM MEMBER_PROFILE WHERE TLNO NOT IN('NULL') AND GENDER = 'W' AND MONTH(DATE_OF_BIRTH) = "3" ORDER BY MEMBER_ID;

 

WHERE TLNO IS NOT NULL

 

IS NOT NULL 구문을 사용해 줄 수있습니다. 

 

CHAT GPT에 질의한 바로는..

 

  1. TLNO NOT IN('NULL'): 이 구문은 TLNO 칼럼의 값이 문자열 'NULL'과 일치하지 않는 레코드를 필터링합니다. 실제 NULL 값과는 관련이 없습니다.
  2. TLNO IS NOT NULL: 이 구문은 TLNO 컬럼에 실제 NULL 값이 없는 레코드를 필터링합니다. 이 구문은 NULL 값을 확인하는 데 사용되며, 해당 상황에 더 적합한 문법입니다.

 

 

< 참고 >

 

https://marketinga.tistory.com/13

 

[SQL] 날짜와 관련된 데이터추출(YEAR,MONTH,DAYOFMONTH)

날짜에 관한 데이터 추출을 알아보겠습니다. 1. 연도 추출 (YEAR) SELECT * FROM (데이터베이스/테이블) WHERE YEAR(컬럼명) = "2021" SELECT * FROM test.please2 WHERE YEAR(orderdate) = '2021' ㄴ test 데이터 베이스의 please

marketinga.tistory.com

 

https://chobokkiri.tistory.com/49

 

[MySQL][TIP] datetime 필드에서 날짜 혹은 시간만 SELECT하기

datetime 필드에서 날짜 혹은 시간만 SELECT 하려면 다음과 같이 하면 된다. SELECT DATE_FORMAT("2016-04-08 11:12:14", '%Y-%m-%d') DATEONLY, DATE_FORMAT("2016-04-08 11:12:14",'%H:%i:%s') TIMEONLY

chobokkiri.tistory.com

 

https://ponyozzang.tistory.com/656

 

MySQL 날짜 변환 DATE_FORMAT 함수 사용 방법

DATE_FORMAT 함수를 사용하면 날짜를 지정한 포맷으로 변경할 수 있습니다. 날짜 포맷을 변경하는 이유는 SELECT로 데이터를 검색하는 경우 조건 대상이 date 타입의 컬럼이라면 날짜 포맷을 일치시켜

ponyozzang.tistory.com