전체 글
-
프로그래머스 - 오프라인/온라인 판매 데이터 통합하기SQL 문제 2024. 1. 9. 14:50
오프라인/ 온라인 판매 데이터 통합하기 ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요. 문제를 읽고서 처음에 해낸 생각은 JOIN을 써야겠다라고 생각해다. 코드를 작성하다보니 뭔가 이상했다. 두개의 테이블을 JOIN을 하면 코드가 안나오기 때문이다. 그래서 문제를 다시 읽고 해석해보니 각 테이블의 SALE_DAT..
-
1/8 TIL스파르타/TIL(Today I Learned) 2024. 1. 8. 20:56
SQL 문제를 풀면서 새롭게 알게 된 점은 1. with문을 연속으로 쓸 때에는 , 로 with문을 구분한다. 2. ORDER BY 절에 집계 함수를 사용할 수 있다. 특강에서는 알고리즘의 간단한 찍먹이 있었고, 어떤 언어든 문제를 해결하기 위해서 필요한 단계를 설명해주었다. 무작정 함수를 적는 것이 아닌 문제를 읽고! 충분히 고민을 하여 미리 어떤 함수가 필요할 것인지 어떤 조건을 설정할 지 미리 주석 처리를 하고 시작하면 갈피를 잡는데 좋은 도움이 된다.
-
프로그래머스 - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기SQL 문제 2024. 1. 8. 16:36
대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 CAR_RENTAL_COMPANY_RENTAL_HISTORY테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명:RECORDS) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID를 기준으로 내림차순 정렬해주세요. 특정 월의 총 대여 횟수가 0인 경우에는 결과에서 제외해주세요 SELECT MONTH(START_DATE) AS MONTH, CAR_ID, COUNT(HISTORY_ID) AS RECORDS FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY..
-
프로그래머스 - 저자 별 카테고리 별 매출액 집계하기카테고리 없음 2024. 1. 8. 12:17
저자 별 카테고리 별 매출액 집계하기 2022년 1월의 도서 판매 데이터를 기준으로 저자 별, 카테고리 별 매출액(TOTAL_SALES = 판매량 * 판매가) 을 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요.결과는 저자 ID를 오름차순으로, 저자 ID가 같다면 카테고리를 내림차순 정렬해주세요. with sales as ( SELECT BOOK.PRICE, BOOK.AUTHOR_ID, BOOK.CATEGORY, SALES.SALES FROM BOOK_SALES as SALES JOIN BOOK ON BOOK.BOOK_ID = SALES.BOOK_ID WHERE date_format(SALE..
-
프로그래머스 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기SQL 문제 2024. 1. 8. 09:41
조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 USED_GOODS_BOARD와 USED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다. -- 코드를 입력하세요 SELECT concat('/home/grep/src/',file.board_id,'/',file.file_id,file.file_name,file.file_ext) as FILE_..
-
프로그래머스 - 우유와 요거트가 담긴 장바구니SQL 문제 2024. 1. 5. 17:04
우유와 요거트가 담긴 장바구니 데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다 SELECT A.CART_ID FROM CART_PRODUCTS A INNER JOIN CART_PRODUCTS B ON A.CART_ID = B.CART_ID WHERE A.NAME = 'Yogurt' AND B.NAME = 'Milk' GROUP BY A.CART_ID ORDER BY A.CART_ID 쿼리 진행 순서 cart_product끼리 inner join을 한다. where 절에서 각 테이블의 name을 요거트와 우..
-
프로그래머스 - 헤비 유저가 소유한 장소SQL 문제 2024. 1. 5. 16:19
헤비 유저가 소유한 장소 이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요. -- 코드를 입력하세요 SELECT ID, NAME, HOST_ID FROM PLACES WHERE HOST_ID IN (SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING count(host_Id) >= 2) 한 쿼리안에 해결하는법을 몰라서 서브쿼리를 활용하였다 group by 를 host_id로 하여서 host_id를 묶고 묶은 host_id의 갯수를 having절에서 2 이상을 처리한다. 서브쿼리의 결과가 1개 이상이므로 다중 연산자인 IN을 사용한다. https://school...