본문 바로가기

SQL43

[leetcode / MySQL] 1179. Reformat Department Table 문제 💡 Reformat the table such that there is a department id column and a revenue column for each month. Return the result table in any order. 테이블 형태 풀이 SELECT id , SUM(CASE WHEN month='Jan' THEN revenue END) AS Jan_Revenue , SUM(CASE WHEN month='Feb' THEN revenue END) AS Feb_Revenue , SUM(CASE WHEN month='Mar' THEN revenue END) AS Mar_Revenue , SUM(CASE WHEN month='Apr' THEN revenue END) AS Apr_R.. 2024. 1. 29.
[프로그래머스 / MySQL] 즐겨찾기가 가장 많은 식당 정보 출력하기 문제 💡 REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요. 테이블 형태 풀이 SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO WHERE (FOOD_TYPE, FAVORITES) IN (SELECT FOOD_TYPE, MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE) ORDER BY FOOD_TYPE DESC 해설 SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO 결과 예시와 일치하도록 .. 2024. 1. 29.
[프로그래머스 / MySQL] 중복 제거하기 문제 💡 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다. 테이블 형태 풀이 SELECT COUNT(DISTINCT NAME) FROM ANIMAL_IN 해설 SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS DISTINCT 로 중복 제거하여 COUNT 해주었다 COUNT와 COUNT(DISTINCT ) MySQL 공식 문서 참고 MySQL :: MySQL 8.0 Reference Manual :: 14.19.1 Aggregate Function Descriptions MySQL 8.0 Reference Manual / ... / Functions and Operat.. 2024. 1. 29.
[프로그래머스 / MySQL] 여러 기준으로 정렬하기 문제 💡 동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다. 테이블 형태 풀이 SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME ASC, DATETIME DESC 해설 SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME ASC, DATETIME DESC 출력 결과 테이블에 포함되어야 하는 컬럼들을 SELECT 문에 순서대로 포함 이름 순으로 조회하되 이름이 같은 경우 나중에 보호하기 시작한 동물을 보여줘야 함 → 이름 오름차순, 보호 시작일 .. 2024. 1. 29.
[프로그래머스 / MySQL] 상위 n개 레코드 문제 💡 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요. 테이블 형태 풀이 SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1 해설 SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1 가장 먼저 들어온 동물은 보호 시작일이 가장 오래된 동물이므로 ORDER BY 로 기본 오름차순 정렬 LIMIT 1으로 출력 개수 제한을 1개로 설정 2024. 1. 29.
[프로그래머스 / MySQL] 조건에 맞는 회원 수 구하기 문제 💡 USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 테이블 형태 풀이 SELECT COUNT(*) AS USERS FROM USER_INFO WHERE LEFT(JOINED, 4) = 2021 AND AGE BETWEEN 20 AND 29 해설 SELECT COUNT(*) AS USERS FROM USER_INFO 회원 명 수를 출력해야 하기 때문에 COUNT(*) 사용 예시를 참고하여 USERS라는 이름으로 컬럼명 설정 WHERE LEFT(JOINED, 4) = 2021 AND AGE BETWEEN 20 AND 29 YYYY-MM-DD 형태로 가입일자가 기록된 JOINED 컬럼에서 LEFT 를 사용하여 .. 2024. 1. 29.
리텐션 읽기 1. Classic Retention(N-Day Retention) 2. Rolling Retention(Unbounded Retention) 3. Range Retention(Bracket Retention) 4. DAU, WAU, MAU 그리고 Stickiness 5. 리텐션 차트, 리텐션 커브 데이터리안의 리텐션 관련 5개 아티클을 읽었다. 그 중 4. DAU, WAU, MAU 그리고 Stickiness 자료에서 DAU, WAU, MAU의 정의를 읽고 DAU, WAU는 간단한 예제로 직접 구해보면서 각 지표의 의미를 이해할 수 있었다. 다음 나오는 내용은 해당 아티클의 내용을 요약한 것이다. DAU는 일간 활성 사용자 수로 일일 활동한 순수 사용자의 수를 나타낸다. WAU, MAU는 각각 주간, 월.. 2024. 1. 11.