본문 바로가기
코딩테스트/SQL

[프로그래머스 고득점 kit] - SELECT (oracle), IS NOT NULL, <> 연산자, LIKE "~%"

by 앵유짱 2024. 1. 17.

3월에 태어난 여성 회원 목록 출력하기

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

 

프로그래머스

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

programmers.co.kr

SELECT MEMBER_ID, MEMBER_NAME, GENDER, TO_CHAR(DATE_OF_BIRTH,'YYYY-MM-DD') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE TLNO IS NOT NULL
AND TO_CHAR(DATE_OF_BIRTH,'MM') = '03'
AND GENDER = 'W'
ORDER BY MEMBER_ID
  • 생일이 3월인 여성의 id, 이름, 성별, 생년월일 조회
  • 전화번호가 null이면 제외 → null 이 아닐경우만 포함하니 where절에 is not null을 써줌
  • id를 기준으로 오름차순 정렬

 

난 TO_CHAR(DATE_OF_BIRTH,'MM') = '03' 이부분에서 자꾸 '03'이 아닌 '3' 이라고 해서 결과를 못봤었다..

댕청한 실수를 방지하기 위해 예시의 데이터포멧을 항상 주시하자 ㅠ

 


아픈 동물 찾기

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

 

프로그래머스

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

programmers.co.kr

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID
  • intake_condition이 'Sick' 인 동물들을 조회하고 id순으로 정렬하는 문제

 


어린 동물 찾기

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

 

프로그래머스

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

programmers.co.kr

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION <> 'Aged'
ORDER BY  ANIMAL_ID
  • 'Aged'가 아닌 동물들을 찾는 문제
  • 같지 않다는 <> 연산자를 사용하면 1초컷

 


동물의 아이디와 이름

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

 

프로그래머스

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

programmers.co.kr

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

단순 조회 문제.. 어제했던게 더 어려웠내..

 


서울에 위치한 식당 목록 출력하기

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

 

프로그래머스

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

programmers.co.kr

SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, R.SCORE
FROM REST_INFO I,
    (SELECT REST_ID, ROUND(AVG(REVIEW_SCORE),2) AS SCORE
    FROM REST_REVIEW
    GROUP BY REST_ID ) R
WHERE 1=1
AND I.REST_ID = R.REST_ID
AND I.ADDRESS LIKE '서울%'
ORDER BY R.SCORE DESC, I.FAVORITES DESC

조건

  • REST_INFO, REST_REVIEW 두 테이블에서 식당ID, 식당이름, 음식종류, 즐겨찾기수, 주소, 리뷰평균점수 조회
  • 리뷰평균점수 : 소수점 세 번째 자리에서 반올림
  • 정렬 : 평균점수 내림차순, 즐겨찾기수 내림차순

 

- ROUND(AVG(REVIEW_SCORE),2) 

세 번째자리에서 반올림이라서 ROUND(값,2) 해 줌

 

- I.RSET_ID = R.RSET_ID

REST_INFO, REST_REVIEW의 ID로 참조

 

- LIKE '서울%'

I.ADDRESS에서 '서울'로 시작하는 것 데이터만 출력