join 7

[Lv.1 / 프로그래머스 / SQL] 조건에 부합하는 중고거래 댓글 조회하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) Lv.1 로 표기되어 있지만 사실 Lv.2나 Lv.3 언저리쯤이라고 생각된다. 난이도 책정이 잘못된 게 아닌가 싶다. 두 테이블을 조인하여 알맞은 컬럼을 SELECT해야 한다. 이 때, 댓글의 CREATED_DATE가 2022년10월인 것을 조회해야 하며, 데이터 형식도 yyyy-mm-dd 꼴이어야 한다. 두 테이블에서 이름이 겹치는 것들이 있는데, 혼동하여 SELECT하지 않도록 주의해야 한다. 맞게 작성한 것 같은데 혹여나 틀린다면, REPLY에서 가져와야 할 것은 BOARD에서 가져오..

[Lv.3 / 프로그래머스 / SQL] 조건에 맞는 사용자와 총 거래금액 조회하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) USED_GOODS_BOARD에서 STATUS가 'DONE'인 물건들의 가격 총 합이 70만원 이상인 사용자들을 조회해야 한다. 두 테이블의 정보를 함께 조회해야 하므로 아이디를 기준으로 INNER JOIN을 하였다. 이후, 사용자 아이디별로 PRICE를 합해야 하므로 GROUP BY를 통해 아이디별로 묶어주었다. SELECT USER.USER_ID, USER.NICKNAME, SUM(BOARD.PRICE) AS TOTAL_SALES FROM USED_GOODS_USER AS USER IN..

[Lv.3 / 프로그래머스 / SQL] 조건에 맞는 사용자 정보 조회하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) USED_GOODS_BOARD 테이블을 WRITER_ID를 기준으로 그룹별로 묶었을 때, 3개 이상 존재하는 사용자 아이디를 조회해야 한다. 해당 조건은 JOIN을 통해 해결한 뒤, 전체 주소와 전화번호를 CONCAT 및 SUBSTRING으로 문제 조건에 맞도록 출력하면 된다. SELECT USER_ID, NICKNAME, CONCAT(CITY," ", STREET_ADDRESS1, " ", STREET_ADDRESS2) AS 전체주소, CONCAT(SUBSTRING(TLNO,1,3), "..

[Lv.3 / 프로그래머스 / SQL] 헤비 유저가 소유한 장소

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) 테이블 내에 HOST_ID의 개수가 2개 이상인 데이터들을 조회해야 한다. 우선 HOST_ID의 개수를 세는 쿼리를 작성하고 INNER JOIN을 통해 연결하여 해결했다. SELECT A.ID, A.NAME, A.HOST_ID FROM PLACES AS A INNER JOIN (SELECT HOST_ID, COUNT(HOST_ID) AS CNT FROM PLACES GROUP BY HOST_ID HAVING CNT > 1) AS B ON A.HOST_ID = B.HOST_ID ORDER B..

[Lv.3 / 프로그래머스 / SQL] 오랜 기간 보호한 동물(1)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) ANIMAL_INS에는 존재하지만 ANIMAL_OUTS에는 존재하지 않는 데이터를 찾아, DATETIME이 가장 낮은 3개의 데이터를 조회해야 한다. LEFT OUTER JOIN을 할 경우 위의 그림과 같이 JOIN하는 테이블에 없는 데이터도 함께 조회가 된다. 이후, WHERE절을 이용해 JOIN하는 테이블의 외래키 값이 없는 경우만 조회하도록 하자. SELECT INS.NAME , INS.DATETIME FROM ANIMAL_INS AS INS LEFT OUTER JOIN ANIMAL_..

[Lv.3 / 프로그래머스 / SQL] 있었는데요 없었습니다

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) ANIMAL_INS와 ANIMAL_OUTS 두 테이블에 모두 데이터가 존재하면서, ANIMAL_INS의 DATETIME이 ANIMAL_OUTS의 DATETIME보다 더 뒤인 데이터를 조회해야 한다. 두 테이블 모두에 존재해야 하므로 INNER JOIN을 사용하며, 날짜 조건은 WHERE을 사용하도록 하자. SELECT INS.ANIMAL_ID , INS.NAME FROM ANIMAL_INS AS INS INNER JOIN ANIMAL_OUTS AS OUTS ON INS.ANIMAL_ID =..

[Lv.3 / 프로그래머스 / SQL] 없어진 기록 찾기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 (MySQL) ANIMAL_OUTS 테이블에는 있지만, ANIMAL_INS 테이블에는 존재하지 않는 데이터를 조회해야 한다. 두 테이블 모두에게 존재하는 데이터를 찾는 것이 아니니, INNER가 아닌 OUTER 조인을 사용한다. SELECT OUTS.ANIMAL_ID , OUTS.NAME FROM ANIMAL_OUTS AS OUTS LEFT OUTER JOIN ANIMAL_INS AS INS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE INS.ANIMAL_ID IS NULL O..

반응형