HackerRank | Draw The Triangle 1 (재귀적CTE)
·
SQL/HackerRank
*을 20행까지 출력하는 문제 WITH RECURSIVE Numbers AS ( SELECT 20 AS n UNION ALL SELECT n - 1 FROM Numbers WHERE n > 1)SELECT REPEAT('* ', n) AS patternFROM Numbers;재귀적 CTE로 20에서 1까지 n을 설정하고REPEAT으로 n만큼 출력한다
HackerRank | Higher Than 75 Marks
·
SQL/HackerRank
문제 풀이WHERE에서 Marks가 75보다 크게 설정 ORDER BY에서 이름을 마지막 3글자 기준으로 정렬하기 위해 RIGHT( ,3)을 사용중복이 생긴다면 ID를 기준으로 오름차순 정렬SELECT NameFROM STUDENTSWHERE Marks > 75ORDER BY RIGHT(Name,3),ID;
HackerRank | Draw The Triangle 2 (재귀적CTE)
·
SQL/HackerRank
문제*을 20행까지 출력하는 문제이다 풀이WITH RECURSIVE Numbers AS ( SELECT 1 AS n UNION ALL SELECT n + 1 FROM Numbers WHERE n 재귀적 cte를 활용하여 n을 1에서 20까지 설정 본 쿼리에서 repeat을 사용하여 행마다 n의 개수만큼 별을 찍게 설정  여담으로 python에서 for문과 같은 원리이다python으로 작성하면 아래와 같다for i in range(1, 21): print('* ' * i)
HackerRank | Occupations (sql에서 pivot하기)
·
SQL/HackerRank
문제데이터를 피벗(Pivot)하여 각 직업(Doctor, Professor, Singer, Actor)별로 이름을 알파벳순으로 정렬하고, 각 직업에 해당하는 이름을 출력해야 합니다. 각 직업별로 가장 많은 이름이 포함된 직업에 맞춰 빈 칸은 NULL로 채웁니다. 풀이FROM에서 occupation을 대상으로 name별로 오름차순 정렬한 row_number를 생성한 서브쿼리 작성 SELECT에서 CASE WHEN으로 직업별로 이름 출력하게 작성 ※ 쿼리에서는 ROW_NUMBER()를 사용하여 각 직업별로 행 번호를 부여하고, 그 번호를 기준으로 *그룹화(GROUP BY)*하여 결과를 생성합니다. 이 과정에서 각 직업별로 CASE 문을 사용하여 각 행에서 해당 직업에 해당하는 이름을 가져오는데, 각 그룹에서..
HackerRank | Weather Observation Station 20 (sql로 중위수 구하기)
·
SQL/HackerRank
문제위도의 중위수를 구하는 문제입니다. 풀이 1 (노가다). 처음에 COUNT로 북위의 개수가 499개인 것을 확인ROW_NUMBER를 통해 250번째에 있는 것이 중위수이므로 아래와 같은 쿼리 작성하지만 이 풀이는 총 개수가 늘거나 줄어든다면 매번 숫자를 바꿔야한다는 번거로움이 존재WITH MEDIAN AS( SELECT LAT_N, ROW_NUMBER() OVER(ORDER BY LAT_N ASC) AS RN FROM STATION)SELECT ROUND(LAT_N, 4)FROM MEDIANWHERE RN = 250; 풀이 2 (범용적인 풀이).WITH구문에서 COUNT(*) OVER()로 각 행마다 전체 행의 개수를 출력하는 칼럼을 추가함 ( 그림의 3열 )그리고 메인 쿼리를 보..