📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/77487 "헤비유저" = 서비스에서는 공간을 둘 이상 등록한 사람❌ 2. 실패한 시도-- 코드를 입력하세요SELECT *FROM PLACESGROUP BY HOST_IDHAVING COUNT(HOST_ID) >= 2ORDER BY ID;GROUP BY를 쓰면 SELECT *은 제대로 동작하지 않는다.그룹핑을 하면 한 HOST_ID당 한 줄만 나오게 되는데, * 안에 있는 다른 컬럼들이 어떤 값을 가져와야 할 지 SQL이 알 수 없기 때문이다.그래서 보통 GROUP BY를 쓰면 집계 함수(COUNT, MIN, MAX)를 함께 써서특정 컬럼을 뽑아내야 한다.⭐ 3. 정답코드SELECT ..

My Tech Blog (MySQL)
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/62284❌ 2. 실패한 시도WHERE NAME = 'Yogurt' AND NAME = 'Milk'처음에는 이렇게 썼는데 결과값이 한 건도 조회되지 않았따.한 행(row)의 NAME은 한 번에 한 값밖에 가질 수 없다.즉, 한 행에서 NAME이 'Yogurt'이면서 'Milk'인 경우는 존재하지 않아서 → 항상 FALSE WHERE NAME = 'Yogurt' OR NAME = 'Milk'이건 두 상품 중 하나라도 들어있으면 선택됨결과적으로 'Yogurt'만 있는 장바구니도 포함된다 → 문제 요구사항(둘 다 있는 장바구니)과 불일치한다. IN + GROUP BY + HAVING COU..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/59413문제요약테이블ANIMAL_OUTS(ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME)조건0시부터 23시까지 각 시간대별 입양 건수(COUNT) 구하기입양이 없는 시간대는 0으로 표시결과는 시간대(HOUR) 순서대로 정렬DATETIME 컬럼에서 시간만 추출해서 계산이거 되게 쉬워보이는데 초보자들은 답 안 보고는 못 풀 정도의 난이도이다.나도 결국 못 풀어서 다른 분들이 푼 코드를 검색해서 하나씩 분석하면서 풀었다. 여기서 어려웠던 부분은 입양이 없는 시간대의 데이터를 어떻게 출력할 것인가이다.크게 세 가지 접근법이 있는데,0부..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/276036문제요약테이블: DEVELOPERS, SKILLCODES조건:A → Front End 스킬 + Python 스킬을 모두 가진 개발자B → C# 스킬을 가진 개발자C → 그 외 Front End 스킬을 가진 개발자출력 컬럼 : GRADE, ID, EMAIL정렬 기준 : GRADE, ID 오름차순주의 : GRADE가 부여되는 개발자만 조회 ⭐ 2. 정답코드집계 방식(SQL 표준 JOIN + GROUP BY) 으로 해결한 쿼리이다.SELEC문제 이중 CASE문을 썼다.-- 코드를 작성해주세요SELECT CASE WHEN SUM(CASE WHEN s.CATEG..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/144856문제요약테이블BOOK (BOOK_ID, CATEGORY, AUTHOR_ID, PRICE, PUBLISHED_DATE)AUTHOR (AUTHOR_ID, AUTHOR_NAME)BOOK_SALES (BOOK_ID, SALES_DATE, SALES)목표2022년 1월 판매 데이터를 기준으로저자별 + 카테고리별 매출액 (TOTAL_SALES = 판매량 * 판매가) 계산출력 컬럼AUTHOR_ID, AUTHOR_NAME, CATEGORY, TOTAL_SALES정렬 조건AUTHOR ID ASC, CATEGORY DESC❌ 2. 실패한 시도SELECT a.AUTHOR_ID, a.AU..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/276035문제요약SKILLCODES 테이블스킬 정보 (이름, 범주, 코드) 저장CODE는 2진수 비트마스크 표현 가능 (2의 제곱수)DEVELOPERS 테이블개발자 정보 (ID, 이름, 성, 이메일, 스킬코드) 저장SKILL_CODE는 여러 스킬을 비트 OR 연산으로 합쳐 놓은 값조건Front End 스킬을 가진 개발자를 찾기DEVELOPERS.SKILL_CODE와 SKILLCODES.CODE를 비트 AND 연산해서 0보다 크면 Front End 스킬 보유자임중복 제거 필요 (같은 개발자가 여러 Front End 스킬을 가지고 있을 수 있음)출력 컬럼ID, EMAIL, FIRST_N..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/131124문제요약리뷰를 가장 많이 작성한 회원 한 명의 리뷰 목록 조회하기MEMBER_NAME, REVIEW_TEXT, REVIEW_DATE 컬럼작성일 기준으로 오름차순 정렬해서 조회⭐ 2. 정답코드-- 제일 많이 작성한 사람-- SUM 리뷰가 MAX인사람 LEVEL1 CTE-- 조인WITH BEST_REVIEWER AS ( SELECT MEMBER_ID, COUNT(REVIEW_ID) AS REVIEW_CNT FROM REST_REVIEW GROUP BY MEMBER_ID ORDER BY REVIEW_CNT DESC LIMIT 1)SELECT p.MEMB..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/284531❌ 2. 실패한 시도-- 코드를 작성해주세요SELECT ROUTE, CONCAT(ROUND(SUM(d_between_dist), 1), 'km') AS TOTAL_DISTANCE, CONCAT(ROUND(AVG(d_between_dist), 2), 'km') AS AVERAGE_DISTANCEFROM subway_distanceGROUP BY routeORDER BY total_distance DESC;어려운 건 없지만 'km' 단위 붙이는 부분이 생소함 → CONCAT 함수 사용 ROUND 함수는 두 번째 인자로 표시할 자릿수 들어감 예) 소수점 셋째 자리에..