inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

SQL 코딩테스트를 위한 첫 걸음

concat, group_concat

LEETCODE - Sales Analysis 3 코드 질문드립니다.

해결된 질문

341

zuuzuubin

작성한 질문수 1

1

안녕하세요, 젬마님 강의 잘 듣고 있는 수강생입니다. 혹시 수업에서 다루지 않은 leetcode 문제도 질문 받아주실지 잘 모르겠지만 한 번 올려 봅니다...!

Sales Analysis 3 문제의 답을 아래와 같이 적었는데 계속 오류가 납니다. 답변 주시면 감사하겠습니다.

 

SELECT P.PRODUCT_ID, P.PRODUCT_NAME
FROM PRODUCT P
INNER JOIN (
    SELECT *
    FROM SALES
    WHERE PRODUCT_ID NOT IN (
        SELECT PRODUCT_ID
        FROM SALES
        WHERE SALE_DATE < '2019-01-01'
        OR SALE_DATE > '2019-03-31'
    ) 
) N
ON P.PRODUCT_ID = N.PRODUCT_ID;

sql mysql 코딩-테스트

답변 1

0

Gemma

안녕하세요 zuuzuubin 님

꼭 제 강의 아니더라도 SQL 문제 질문은 늘 환영입니다!:)

아래 풀이 보시고 이해 안가시면 재질문 부탁드립니다.

문제: https://leetcode.com/problems/sales-analysis-iii/description/ 

 

풀이에서 DISTINCT 하나만 놓치신거였네요!

Sales 테이블에 ‘This table can have duplicate rows’ 이렇게 써있는데요.

그래서 Sales 테이블에 동일한 product_id가 여러 개 포함될 수 있습니다.

 

풀이1: 

동일한 product_id가 여러 개 있는 Sales 테이블과 Product 테이블이 inner join 하면서, 최종 결과물에 중복된 product_id가 존재할 것입니다. 그래서 최종 바깥쪽 select문에 DISTINCT를 추가하셔도 됩니다.

 

SELECT DISTINCT P.PRODUCT_ID,
P.PRODUCT_NAME
FROM PRODUCT P
INNER JOIN (
    SELECT *
    FROM SALES
    WHERE PRODUCT_ID NOT IN (
        SELECT PRODUCT_ID
        FROM SALES
        WHERE SALE_DATE < '2019-01-01'
        OR SALE_DATE > '2019-03-31'
    ) 
) N
ON P.PRODUCT_ID = N.PRODUCT_ID;

 

풀이2: 

join하는 temp 테이블에서 product_id가 하나만 나오게끔, 미리 DISTINCT product_id를 처리해주셔도 됩니다. 그러면 join을 하더라도 product_id는 최종 결과물에서 하나씩만 나올 것입니다.

SELECT P.PRODUCT_ID,
P.PRODUCT_NAME
FROM PRODUCT P
INNER JOIN (
    SELECT DISTINCT PRODUCT_ID
    FROM SALES
    WHERE PRODUCT_ID NOT IN (
        SELECT PRODUCT_ID
        FROM SALES
        WHERE SALE_DATE < '2019-01-01'
        OR SALE_DATE > '2019-03-31'
    ) 
) N
ON P.PRODUCT_ID = N.PRODUCT_ID;

코딩 살구클럽 가입 문의

0

12

1

3-13 리텐션 과제 제출합니다!

0

33

1

경쟁상태

0

44

1

stmt

0

39

1

실행 통계2 explain analyze 조인 쿼리

0

36

1

3강 인덱스 구조 강의 자료 문의

1

47

1

[해결됨]마지막 강의 내용 수정 화면이 기능을 못하네요.

0

45

1

[해결됨]부분적으로 화면 이동이 안되는 부분이 있습니다.

0

83

6

SQL 기본 문법

0

90

2

2강에 파일 어디있을까여,,

0

80

2

문제 링크 변경

0

121

2

SQL 파일 다운로드

0

130

2

workbench 테이블 생성

0

339

2

sql 코딩 테스트에서 index 생성 가능 여부

1

378

2

cross join, full join강의 / leetcode 1280번 문제 질문드립니다

1

353

1

not In강의 / leetcode 1978 질문 드립니다

2

251

1

[The Latest Login in 2020] datetime 계산 관련

1

306

1

[Average Selling Price] 문제 테스트케이스 실패

1

355

3

서브쿼리 질문

1

393

1

EASY INNER JOIN 관련 average-selling-price 연습문제

1

303

1

INNER JOIN 강의 질문

1

392

2

문제 주소 링크

1

347

2

work bench 설치관련 문의

1

325

2

깃헙 데스크탑, MYSQL 워크벤치 연동

2

920

3