[42] 부트캠프 TIL - 본캠프 24일차

2024. 9. 26. 10:58부트캠프 TIL

728x90

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

1-1)  sql 문제 : 상품 별 오프라인 매출 구하기

ㄴ 문제 : 상품정보와 상품판매정보테이블에서 상품코드별 매출액(판매가*판매량)합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬하고, 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.

※ 테이블 2개를 참조해서 조회.

ㄴ 설명_1 : 조회할 컬럼 체크 - (상품코드, 총판매량)

ㄴ 설명_2 : 2개 테이블 조인할 컬럼 체크 (상품아이디)

ㄴ 설명_3 : 2번에서 조인한 후에 매출액합계 공식에 따라 계산한 값을 계산 (SUM과 * 활용)

ㄴ 설명_4 : 상품코드별로 묶는다 (GROUP BY 활용)

ㄴ 설명_5 : 판매량의 is not null 조건을 넣었는데 정답에 영향은없다. (데이터 조회했을때 빈값이 있어서 없애려고 임의로넣었음)

ㄴ 설명_6 : 매출액 내림차순, 상품코드 오름차순 정렬을 해준다.(ORDER BY 활용)

ㄴ 실제 쿼리 :

SELECT 
    a.PRODUCT_CODE,
    SUM(a.PRICE * b.SALES_AMOUNT) AS SALES
FROM PRODUCT a LEFT JOIN OFFLINE_SALE b ON a.PRODUCT_ID = b.PRODUCT_ID
WHERE b.SALES_AMOUNT IS NOT NULL
GROUP BY a.PRODUCT_CODE
ORDER BY 2 DESC, 1 ASC;

 

 

1-2) 알고리즘 문제 : 내적

 

ㄴ a,b각각의 배열에서 같은 인덱스끼리 값을 곱해야한다.

- 배열의 길이는 같기때문에 반복문으로 results변수에 각 배열의 값을 곱해준다.

ㄴ answer에  곱한값을 다 더해준다.

ㄴ answer를 리턴하면 마무리

728x90