[53] 부트캠프 TIL - 본캠프 35일차

2024. 10. 11. 15:44부트캠프 TIL

728x90

1. 프로그래머스 이용한 sql과 알고리즘 문제 해결

1-1)  sql 문제 : 가격대 별 상품 개수 구하기

ㄴ 문제 : 상품 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL문을 출력해주세요. 이때 컬럼명은 각각 PRICE_GROUP, PRODUCTS로 지정하고, 가격대 정보는 각 구간의 최소금액 10000이상~20000미만이면 10000 이 형태로 표시해주세요.

 

ㄴ 설명_1 : 조회할 컬럼 체크 - (가격, 상품ID)

ㄴ 설명_2 : 가격대 별 조건문 (CASE WHEN활용)

ㄴ 설명_3 : 상품 개수 구하기 (count함수 활용)

ㄴ 설명_4 : 가격대별 그룹화 (GROUP BY 활용)

ㄴ 설명_5 : 오름차순 정렬 (ORDER BY 활용)

ㄴ 실제 쿼리 :

SELECT 
CASE WHEN PRICE BETWEEN 0 AND 9999 THEN '0'
     WHEN PRICE BETWEEN 10000 AND 19999 THEN '10000'
     WHEN PRICE BETWEEN 20000 AND 29999 THEN '20000'
     WHEN PRICE BETWEEN 30000 AND 39999 THEN '30000'
     WHEN PRICE BETWEEN 40000 AND 49999 THEN '40000'
     WHEN PRICE BETWEEN 50000 AND 59999 THEN '50000'
     WHEN PRICE BETWEEN 60000 AND 69999 THEN '60000'
     WHEN PRICE BETWEEN 70000 AND 79999 THEN '70000'
     WHEN PRICE BETWEEN 80000 AND 89999 THEN '80000'
END PRICE_GROUP,
COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY 1
ORDER BY 1 ASC

ㄴ CASE WHEN으로 가격대별 분리와 GROUP BY로 분리한 가격대별로 묶어주는 2가지가 가장 중요하다.

ㄴ 전체 데이터 조회했을때 8만원대까지 데이터들이 있어서 총 8만원까지 CASE WHEN과 PRICE를 BETWEEN으로 가격대를 구해줬다.

 

1-2) 알고리즘 문제 : 크기가 작은 부분 문자열

 

ㄴ 지금까지 알고리즘문제를 풀때 흐름을 머리속으로만 생각해놓고 진행을 했는데 오늘은 구체적으로 문제를 풀기전 주석으로 3줄 정도 흐름을 써놓고 시작을했다. (이 방법 확실히 좋은것 같다.)

- s변수의 길이만큼 반복문을 먼저 실행한다.

-  p의 길이를 구해서 t에서 p의 길이만큼 잘라서 숫자를 비교해야한다. (이때 substring사용)

-  그때 substring으로 구한값과 p의 값을 비교하여 조건에 부합할때 answer를 증감시켜서 개수를 구한다.

ㄴ substring으로 구하고 반복문이 실행되면서 구할 수의 index위치를 변경하면서 진행한다.

728x90