일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 그로스해킹
- segmentation
- 이벤트 매개변수
- 상관계수
- sql 개발자
- 후기
- DISTINCT
- 용어 정리
- API
- 데이터 분석
- pandas
- git
- Funnel
- 맞춤 이벤트
- Google Analytics
- tablueau
- Kaggle
- 맞춤 자바스크립트
- Ga
- bigquery
- Python
- 통계
- It
- tableau
- SQLD
- 캐글
- Ecommerce
- SQL
- 크로스셀링
- oracle
- Today
- Total
녕녀기의 실험일지
[ Oracle ] 삼각형 분류하기 본문
본문으로
안녕하세요. 녀기입니다.
헤헤
바로 돌아왔습니다.
sql 코테 너무 어려운 것ㅋㅋㅋㅋ
이번 문제는 '삼각형을 분류하기' 입니다.
각 변의 길이가 나와있고
정삼각형인지, 이등변인지, 아니면 삼각형이 아닌지 등을 분류해야 합니다.
가장 긴 변을 찾고, 나머지 변을 통해 계산하려 했지만
이는 말이 안 되는 방법이어서
검색을 해 보니
바로 대안이 나왔습니다ㅋㅋㅋㅋㅋ
삼각형이 아닌 것만 찾으면 나머지는 쉽더라구요.
바로 들어가보겠습니다!!
삼각형 분류
select
case
when (a+b) <= c or (a+c) <= b or (c+b) <= a then 'Not A Triangle'
when a = b and b = c then 'Equilateral'
when a != b and b != c and c != a then 'Scalene'
else 'Isosceles'
end
from triangles
삼각형이 정의가 되려면
'가장 긴 변을 제외한 두 변을 더한 값이, 가장 긴 변보다 길어야 한다.'
라는 조건이 있습니다.
위 조건을 만족하지 못하면, 삼각형이 아닌 것입니다.
그렇다면 처음으로 삼각형이 아닌 데이터부터 정의합니다.
a, b, c 컬럼 중 어떤 값이 가장 큰 값이 알지 못하므로
(사실 알 수 있습니다. greatest() 함수 사용하면 됩니다.)
3개의 변 중 2개를 추출해서 더한 값이, 남은 한 변보다 작거나 같으면 삼각형이 아닌 것입니다.
3번만 해 보면 되기 때문에 간단합니다.( 3C2 = 3 * 2 / 2 * 1 )
CASE 절에 첫 번째에 정의해 줍니다(코드 블럭 참조).
두 번째는 정삼각형을 정의해 줍니다.
정삼각형을 먼저 정의하는 이유는 삼각형 정의 중 가장 작은 영역이기 때문입니다.
a = b 가 같고, b = c 가 같으면 정삼각형 입니다.
a = c 는 정의할 필요가 없습니다.
그 다음 가장 큰 단위의 삼각형을 정의합니다.
이등변 삼각형이 그냥 삼각형의 부분 집합이지만,
이등변 삼각형을 정의하려면 길이가 같은 두 변이 있는지 부터 확인해야 하기 때문에
힘들 것이라고 생각이 듭니다.
(방법이 있다면 누군가 댓글로 알려주세요.
사랑으로 보답하겠습니다.)
각 변의 길이가 전부 다르면 삼각형이 될 것입니다.
여기서는
a != b and b != c and c != a
를 확인해야 합니다.
a랑 c가 같으면서 b와는 다를 수 있기 때문이죠!
마지막으로 ELSE 조건에 이등변 삼각형을 넣어주면
삼각형을 분류할 수 있습니다.
삼각형이 아닌 조건만 찾으면 나머지는 호다닥 찾을 수 있는 문제였습니다....
왜 처음에 저 생각을 못했을까요?
수학 공부 나름 열심히 했는데...ㅎㅎㅎㅎ
과거로 회귀해야 하나(?)
쨌든 풀었으니 된거죠?
(뻔뻔)
다시 연습하러 가볼게요~~
뿅!
'-- Data -- > - SQL -' 카테고리의 다른 글
[ Oracle ] ORDER BY + CASE를 사용해 조건에 따른 정렬 순서 정하기 (0) | 2024.02.27 |
---|---|
[ Oracle ] start with와 connect by를 사용해 부모 노드 확인하기 (0) | 2024.02.22 |
[ Oracle ] NVL, LAG, LEAD, INTERVAL, ROW_NUMBER를 사용해 프로젝트 시작 날짜와 끝난 날짜 출력 (0) | 2024.02.21 |
[ BigQuery ] SQL 쿼리문을 Looker Studio 연동하기 (0) | 2024.02.07 |
[ BigQuery ] 카테고리별 page_view 수 확인 (0) | 2024.02.05 |