TIL/SQL 28

리트코드| average selling prices

테이블 문제각 제품의 평균 판매 가격을 구하는 솔루션을 작성합니다. 소수점 이하 2자리로 반올림해야 합니다.average_price순서에 관계없이 결과 테이블을 반환합니다. Input 나의 풀이)select a.product_id, round(sum(a.price*b.units)/sum(b.units),2) as average_pricefrom Prices a left join UnitsSold b on a.product_id=b.product_idand b.purchase_date between a.start_date and a.end_dategroup by 1 처음에 product_id가 같길래 inner join만 해주었는데, 합쳐진 테이블의 행이 엄청 많아졌었다.on 이후에 and로 purchas..

TIL/SQL 2024.09.05

리트코드| Confirmation Rate (My SQL)

나의 풀이)with A as (select a.user_id,            b.action,            case when b.action = 'confirmed' then 1                    else 0 end as num from Signups a left join Confirmations b on a.user_id = b.user_id) select user_id, sum(num)/count(*) as 'confirmation_rate' from A group by user_idSignups에만 존재하는 user_id가 있었기 때문에 left join을 해주었다.case when문을 사용하여 confirmed 인 경우에 1 아닌 경우 0을 주어본 쿼리에서 sum()을..

TIL/SQL 2024.09.04

리트코드| Students and Examinations (My SQL)

나의 풀이)SELECT a.student_id, a.student_name, b.subject_name, COUNT(c.subject_name) AS attended_examsFROM Students aCROSS JOIN Subjects bLEFT JOIN Examinations c ON a.student_id = c.student_id AND b.subject_name = c.subject_nameGROUP BY a.student_id, a.student_name, b.subject_nameORDER BY a.student_id, b.subject_name;Students 테이블과 Subjects 테이블에는 접점 컬럼이 없기 때문에 Cross join을 통해 x 의 형태로 출력예시)   엘리스 x 수학..

TIL/SQL 2024.09.03

리트코드| 온도 상승(MySQL)

문제어제 날짜와 비교하여 온도가 더 높은 모든 날짜를 찾는 솔루션을 작성해라. 나의 풀이)with w1 as (    select id, recordDate, temperature        from Weather),w2 as (    select id, recordDate, temperature    from Weather)select w1.idfrom w1,w2where datediff(w1.recordDate, w2.recordDate) = 1 and w1.temperature > w2.temperature임시테이블로 w1과 w2를 만들어 조건을 부여하여 조회하였다. 튜터님의 풀이)with temp1 as(    select id, recordDate, temperature , temperatur..

TIL/SQL 2024.08.22

프로그래머스| 상품을 구매한 회원 비율 구하기

문제설명다음은 어느 의류 쇼핑몰에 가입한 회원 정보를 담은 USER_INFO 테이블과 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블 입니다. USER_INFO 테이블은 아래와 같은 구조로 되어있으며 USER_ID, GENDER, AGE, JOINED는 각각 회원 ID, 성별, 나이, 가입일을 나타냅니다.ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다. 문제USER_INFO 테이블과 ONLINE_SALE 테이블에서 2021년에 가입한 전체 회원들 중 상품을 구매한 회원수와 상품을 구매한 ..

TIL/SQL 2024.08.14

프로그래머스| 자동차 대여 기록 별 대여 금액 구하기(MySQL)

문제 설명다음은 어느 자동차 대여 회사에서 대여 중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블과 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 자동차 종류 별 대여 기간 종류 별 할인 정책 정보를 담은 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블 입니다. CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.   나의 풀이)SELECT distinct b.HISTORY_ID,                ROUND(a..

TIL/SQL 2024.08.09

프로그래머스| 입양 시각 구하기(2) (MySQL) <RECURSIVE CTE>

문제 설명ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. 문제보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. 본 테이블에 19시까지 밖에 없었음. 0시 20시, 21시, 22시, 23시까지 추가해야 함.RECURSIVE CTE (재귀 쿼리문)를 사용해서 추가해줌...

TIL/SQL 2024.08.07

프로그래머스| 오프라인/온라인 판매 데이터 통합하기(My SQL)

문제 설명 다음은 어느 의류 쇼핑몰의 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블과 오프라인 상품 판매 정보를 담은 OFFLINE_SALE 테이블 입니다. ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며, ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.동일한 날짜, 회원 ID, 상품 ID 조합에 대해서는 하나의 판매 데이터만 존재합니다. OFFLINE_SALE 테이블은 아래와 같은 구조로 되어있으며, OFFLINE_SALE_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 오프라인 상품 판매 ID, ..

TIL/SQL 2024.08.05

프로그래머스| 그룹별 조건에 맞는 식당 목록 출력하기(My SQL)

문제 설명 다음은 고객의 정보를 담은 MEMBER_PROFILE테이블과 식당의 리뷰 정보를 담은 REST_REVIEW 테이블입니다. MEMBER_PROFILE 테이블은 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다. REST_REVIEW 테이블은 다음과 같으며, REVIEW_ID, REST_ID, MEMBER_ID, REVIEW_SCORE, REVIEW_TEXT,REVIEW_DATE는 각각 리뷰 ID, 식당 ID, 회원 ID, 점수, 리뷰 텍스트, 리뷰 작성일을 의미합니다. 문제MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 S..

TIL/SQL 2024.08.02

프로그래머스| 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기(My SQL)

문제 설명 다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다. 문제CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022년 8월부터 2022년 10월까지 총 대여 횟수가 5회 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 별 총 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해..

TIL/SQL 2024.08.02