[71] 부트캠프 TIL - 본캠프 52일차

2024. 11. 6. 12:18부트캠프 TIL

728x90

1. 프로그래머스 사용

1-1)  sql 문제 : 오프라인 온라인 판매 데이터 통합하기

ㄴ 문제 : 온라인 판매정보 테이블과 오프라인 판매정보 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매날짜, 상품id, 유저id, 판매량을 출력하는 sql문을 작성해주세요. 오프라인 판매 테이블의 판매 데이터의 user_id값은 null로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고, 판매일이 같다면 상품id를 기준으로 오름차순, 상품id까지 같다면 유저id를 기준으로 오름차순 정렬해주세요.

 

문제풀이)

1) 문제를 읽고 필요한 조건들을 체크한다

- 판매날짜, 상품id, 유저id, 판매량을 구해야한다.

 

2) 2022년 3월 조건

- SALES_DATE를 기준으로 2022년 3월을 WHERE절로 구한다. 

 

3) 오프라인 판매 테이블에서 USER_ID의 값은 NULL로 표시

- 해당 컬럼의 값은 null로 진행

4) 판매일, 상품ID, 유저ID 정렬 오름차순

- order by asc를 활용해야함.

 

5) 최종 완성 쿼리문

-

SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM 
(SELECT USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE FROM ONLINE_SALE
UNION ALL
SELECT NULL AS USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE FROM OFFLINE_SALE) A
WHERE DATE_FORMAT(SALES_DATE,'%Y-%m') = '2022-03'
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID

- 온라인 판매 테이블과 오프라인 판매 테이블의 데이터를 합치기 위해 UNION ALL을 활용한다.

- UNION ALL은 양 쪽에 있는 테이블의 데이터를 중복된 데이터도 다 조회하는 역할이다.

- 그리고 회원id를 오프라인 판매 테이블에서는 null로 표시되길 원했기 때문에 해당부분을 조건으로 추가한다.

-  2022년 3월의 조건을 판매일 기준으로 조회한다

-  판매일, 상품id, 회원id를 order by로 오름차순으로 정렬해준다.

 

2. Spring 2차 조별 프로젝트 1차작업 완료

1) 가게 단건 조회 메뉴 연동
2) 가게 검색, 가게목록조회, 일반권한에서만 조회되도록

3) 가게생성3개 제한시 active 조건
4) 폐업시 메시지 출력

5) 이미 폐업된 가게 예외처리

6) 가게 생성, 수정, 폐업 사장님만 가능하도록

 

 

3. 프로젝트 추가 작업 제안

1) 뷰 만들기

- 뷰가 생기게된다면 토큰을 쿠키나 세션에 저장해야하고, 그 값을 기준으로 사장님과 일반회원의 뷰를 구분해야함.

 

2) 가게 즐겨찾기

- 가게즐겨찾기기능 (엔티티와 테이블 새로 생성하여 진행해야함 - 고객권한에서만 가능하도록)

 

3) 메뉴명 검색기능

- 가게명 검색말고 메뉴명검색했을때 그 메뉴를 가지고 있는 가게들을 다 검색하는 기능

 

 

 

 

 

 

 

728x90