inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[백문이불여일타] 데이터 분석을 위한 중급 SQL

섹션 2- CASE 해커랭크 문제 풀이 질문

262

Taek Taek

작성한 질문수 3

2

일단 저는 

Select CASE

            WHEN A + B <= C OR A + C <= B OR B + C <= A THEN 'Not A Triangle'

            WHEN A = B AND A = C THEN 'Equilateral'

            WHEN A = B OR A = C OR B = C THEN 'Isosceles'

            WHEN A != B AND A !=C AND B != C THEN 'Scalene'

       END

FROM TRIANGLES

위와 같이 문제를 해결했고, 선생님도 거의 비슷하게 문제를 해결한 것을 확인했습니다.

지금 문제와 같은 경우 AND, OR의 개수가 각각의 WHEN 절에 3개 이하가 존재해서 위와 같이 하드코딩으로 적어도 큰 문제가 없다고 보지만, 만약 AND와 OR의 조건의 개수가 점점 늘어나게 된다면 위와 같은 방식은 여러가지 의미로 좋지않다고 생각합니다.

혹시 AND나 OR 같은 조건의 개수를 줄일 수 있는 방법이 있다면 어떻게 하면 효율적으로 AND나 OR을 줄일 수 있을지 알 수 있을까요?

sql

답변 2

0

Taek Taek

질문이 명확하지 않았네요 ㅠ 죄송합니다.

제가 궁금한 점은

 WHEN A + B <= C OR A + C <= B OR B + C <= A THEN 'Not A Triangle'

여기 WHEN절을 살펴보면 비교대상이 A, B, C 이 세가지만 존재하기 때문에

비교를 3번만하고 끝이 났지만

만약 비교대상이 A, B, C, D, E , .... , Y , Z 같이 굉장히 많아질 경우

WHEN A 와 B 비교 AND B 와 C의 비교 AND C와 D의 비교 .... 무수히 많은 비교 ... Y 랑 Z의 비교 THEN '무수히 많은 비교의 끝에 얻은 보람'

이런 식으로 WHNE이 굉장히 길어지기 마련인데,

이러한 경우 효율성이 굉장히 떨어진다고 생각되고 만약 쿼리문을 수정해야하는 상황이 되었을 경우 어디를 수정해야하는지 잘 모르는 결과를 초래한다고 생각합니다.

혹시 위와 같은 상황을 효율적으로 해결하는 방안이 있을까요?

입니다!

아무리 고민해봐도 효율적으로 해결하는 방법이 보이지 않아서 질문드렸습니다 ㅜ

바쁘신 시간 쪼개서 답변 해주셔서 감사합니다 :)

0

윤선미

Taek Taek 님 안녕하세요. 제가 질문의 의도를 파악하지 못했어요ㅠ_

혹시 수도 코드(수행하고 싶은 로직을 완벽한 코드가 아니더라도 적어보는 것)
로 하고싶은 일을 대충이라도 표현해주실 수 있을까요?

혹시 질문이, 다른 프로그래밍 언어들 같이 변수를 만드는 일을 할 수 있는지 물어보신 건가요?

pseudo-code: https://medium.com/djangogirlsseoul-codecamp/%EC%9D%98%EC%82%AC%EC%BD%94%EB%93%9C-pseudo-code-%EB%9E%80-d892a3479b1d

리트코드 1280. Students and Examinations

0

75

3

16강 LEFT JOIN 리트코드 (183. Customers Who Never Order) 관련 질문

0

89

2

African Cities 문제관련 질문

0

54

1

SQL 코딩테스트 질문

0

206

1

HACKER RANK에서 문제찾기

0

97

2

강의 자료 다운로드

0

90

2

Asian population 문제가 없어요

0

77

2

INNER JOIN 에서 A.키 쓸때 빨간 색 나오고 'dause'

0

68

2

별칭 관련해서 질문 있습니다.

0

79

2

rising temperature 문제 질문

0

98

2

해커랭크 TOP EARNERS 문제 질문

0

99

1

ON 뒤에 질문

0

95

2

INNER JOIN 질문. 강의와 결과값이 다릅니다.

0

196

3

END, 뒤에 * 붙이면 에러가 뜹니다

1

204

2

CustomerID가 중복되서 나타나요

0

234

3

별칭이 전체 테이블을 못 불러와요.

0

142

2

CASE WHEN 쿼리 오류 문의

1

325

3

CASE문제풀이 질문

0

125

1

Customers Who Never Order 풀다가 Alias관련 질문사항

0

138

1

Average Population 질문

0

130

1

Revising Aggregations - The Count Function 질문

0

104

1

Average Population of Each Continent 에대해서 질문

0

193

3

w3schools 에서 쿼리 작성 질문

0

159

1

INNER JOIN 할 때 NULL 값이 안보일 수도 있나요?

0

329

1