-
2024-01-29스파르타/TIL(Today I Learned) 2024. 1. 29. 21:15더보기
SQL 코드카타
Type of Triangle(SQL)(case when, 삼각형 분류하기)
주어진 세 변의 길이를 보고 어떤 삼각형인지 판별하는 문제이다
일단 혹시 되나 싶어서 테스트 해본 결과 t.A = t.B = t.C같은 조건은 인식 못하는 듯
SELECT CASE WHEN (t.A + t.B <= t.C) OR (t.A + t.C <= t.B) OR (t.C + t.B <= t.A) THEN "Not A Triangle" WHEN t.A = t.B AND t.B = t.C THEN "Equilateral" WHEN (t.A = t.B AND t.B != t.C) OR (t.A = t.C AND t.A != t.B) OR (t.C = t.B AND t.B != t.A) THEN "Isosceles" ELSE "Scalene" END type_of_triangle FROM triangles t
우선 삼각형의 조건을 만족하지 못하는 경우는 not a triangle로 먼저 분류해주고 그다음 세변의 길이가 같은 경우는 equilateral로 두변의 길이만 같은 경우는 isosceles로 그것도 아니면 그외는 세변의 길이가 모두 다른 삼각형인 경우이기 때문에 scalene으로 분류해주었다
The PADS(SQL)(특별한 건 없는데 문제 해석이 까다롭..?, 각각 쿼리 2개 결과 출력)
각 이름에 대해 직업의 첫글자를 괄호안에 넣어 뒤에 붙이고(이름순으로 정렬), 또 `There are a total of [occupation_count] [occupation]s.` 형태(occupation_count는 직업에 해당되는 수, occupation은 직업인데 소문자로 하라고 한다)로 출력(occupation_count로 오름차순 정렬하고 같은게 있을 경우 occupation으로 오름차순 정렬)하는 문제이다
(SELECT CONCAT(o.name,"(",SUBSTR(o.occupation,1,1),")") FROM occupations o ORDER BY o.name) UNION ALL (SELECT CONCAT("There are a total of", " ", COUNT(o.name), " ",o.occupation,"s") FROM occupations o GROUP BY o.occupation ORDER BY COUNT(o.name))
각각 쿼리만 따로 해줬을 때는 정렬 똑바로 되었었는데 왜 union하니까 정렬 또 안된 것으로 나오는지?
SELECT CONCAT(o.name,"(",SUBSTR(o.occupation,1,1),")") FROM occupations o ORDER BY o.name; SELECT CONCAT("There are a total of", " ", COUNT(o.name), " ",lower(o.occupation),"s.") FROM occupations o GROUP BY o.occupation ORDER BY COUNT(o.name), o.occupation;
왜 인지는 모르겠지만 union으로 안합치고 각각 따로 쿼리로 해서 하는 듯함.. 이럼 결과 두개일텐데 적어두던가.. Generate the following two result sets가 그 말이였나 싶기도 하고…
Revising Aggregations - The Count Function(SQL)(간단)
Revising Aggregations - The Count Function | HackerRank
인구가 10만보다 많은 도시의 수를 출력하는 문제이다
SELECT COUNT(*) FROM city c WHERE c.population >100000
오늘은 SQL 코드카타는 HackerRank에서는 초반부라서 그런지 역시나 쉬웠다 삼각형 판별은 그리 단순하지는 않았지만 이전 leetcode에서 비슷한 것을 이미해보았기에 크게 어려움이 없었다 그리고 두번째는 union같은것으로 합쳐서 보여달라는 의미인줄알았는데 그렇게 하면 이상하게 나오게 되고 그냥 어떻게 제출했나 보니 그냥 쿼리 두개로 적어서 다들 제출되어있길래 그렇게 하니 해결이 되었다. 마지막은 매우 간단한 문제였다
그외 오늘 개인과제 해설특강이 있었는데 주로 전처리관련해서 파이썬, 판다스로 하는 부분이 대부분이라 생각보다 난이도가 쉬웠으며, 통계얘기는 거의 하지 않았었다. 마지막 4번문제에 대하여 사람들이 어렵다고들 하던데 통계적 의미는 이해를 제대로 못하더라도 그냥 코드자체는 그리 어려운 부분이 없었던 것같은데 어렵다고 하는 사람들이 매우 많았고 튜터님도 사실 풀지말라고 생각하시고 내라고 하신 문제라는 말에 조금 놀랐었다(파이썬이 안익숙한 사람들에게는 좀 많이 복잡했나 생각이 들었다) 그래서 그렇게 특강에서는 for _in range(1000):같이 반복되는 변수를 사용하지 않고자할 경우에는 저런식으로 표현할 수도 있다는 것을 알게 되었고, 또 boolean 데이터에 ~를 붙이면 not을 붙인 것처럼 반전시킬 수 있다는 사실도 알게되었다 이 2개외에는 크게 얻게된 내용은 없었던 것 같다.
그리고 머신러닝을 배우는 기간이라 강의를 듣고있는데 기초부분이라서 그런지 아직까지는 그렇게 어렵다고 느낀 부분을 만나지 못하였는데 이것에 관련해서는 더 들어봐야 (어려운 부분이 있는지 없는지는)알듯하다.
그리고 수요일에 3번째 상담이 있는데 취업관련 사이버교육을 들어놨어야 했는데 주말에 깜박하고 듣지 못하였기 때문에 오늘 들을 생각이라 TIL를 평소보다 빨리 작성하게 되었다
아 그리고 판다스를 익숙해지기 위해서 10분 판다스를 따라 타이핑 해보는 일도 금요일 부터 시작해서 매일 해주고있는데 이부분에 관련해서도 같이 추가로 작성할까 생각중이다
'스파르타 > TIL(Today I Learned)' 카테고리의 다른 글
2024-01-31 (0) 2024.01.31 2024-01-30 (0) 2024.01.30 2024-01-27~2024-01-28 (1) 2024.01.29 2024-01-26 (1) 2024.01.26 2024-01-25 (1) 2024.01.26