본문 바로가기

데이터 분석/SQL

(17)
[스크랩 ] MYSQL - DECODE함수 # Decode 함수 정리 프로그래밍의 switch문 역할을 함 예를 들어 switch(a) case 1: 결과1 case 2 : 결과2 라는 프로그래밍 문은 SQL에서 DECODE(a, a=1, 결과1, a=2, 결과2)로 사용가능함 DECODE(컬럼명, 조건1, 결과1, 조건2, 결과2, 조건3, 결과3, ....) # example DECODE(연예인, '유재석', '놀면뭐하니', '강호동', '아는형님','프로그램X') 이 예에서 DECODE함수는 연예인이 유재석이면 '놀면뭐하니'를 반환하고 강호동이라면 '아는형님'을 반환하며 유재석과 강호동이 아닌 연예인은 '프로그램X'를 반환한다. 출처 : https://computer-science-student.tistory.com/242
[MYSQL] SQL Project Planning / 2가지 풀이 >> 문제 => Project table이 주어지고, task_id, start_date, end_date가 주어짐 => start_date와 end_date의 차이는 무조건 1로 고정되어 있음 => 만약 end_date가 연속된다면 => 이건 같은 프로젝트임 => 각 프로젝트의 start_date와 end_date를 구하시오 => 프로젝트의 일수별로 오름차순 -> start_date별로 오름차순 >> input 예시 어려웠던 점 => 아니 연속되는 값을 어떻게 판별하는데? => 같은 행에서 왔다갔다하며 조회하는 게 가능? => 가능했음 >>풀이1. 분석함수 없이 기준선 만들기 결국 end_date가 연속된 데이터들끼리 묶어줄 무언가가 필요함 => end_date가 연속된다면, 각 end_date 별 차..
[MY SQL] Symmetric Pairs / 조건분기+union >> 문제 => (x,y)의 좌표들이 행으로 주어짐 => (x.y) 를 뒤집은 (y.x)가 행에 존재하면 그 행을 출력하라는 문제 >>입력 예시 >> (20, 20) 은 (20, 20)과 대응 >> (20, 21) 은 (21, 20)과 대응 >> (22, 23) 은 (23, 22)와 대응 => 여기서 20, 20이 서로 같아도 행이 두 개여야 인정됨 => 즉, x,y가 같은 x,x가 한 행만 존재한다면 출력하면 안된다. >> 내가 푼 풀이 먼저 경우를 2가지로 구분하였다. case1 ) x==y 일 때 => 만약 같은 행이 하나 더 존재하면 출력해야 함 ex) (20,20) 이 하나만 있다면 -> 대응되는 행이 없으므로 출력x (20,20) 이 하나 이상 있다면 -> 대응되는 행이 있으므로 출력o cas..
[MYSQL] Draw the Triangle / 프로시저로 for문 구현 >> 문제 = Draw the Triangle 1 => Draw the Triangle 2 >>생각했던 점 - 그동안 반복문 구현은 총 2가지로 학습 : 1. 변수로 값 증가시키기 : 2. 재귀문 => 프로시저로 구현하는 게 더 쉽지 않을까? 라는 생각이 듦 => 문제가 비슷하기 떄문에 몇가지 경계만 수정하면 코드 재활용이 가능하기 때문 => 다만, 이 프로시저는 단순 '반복 출력'에 한정되어 있기에 join 등의 응용에는 한계가 있으리라 생각됨 >> 결과 => Draw the Triangle 1 => Draw the Triangle 2 => 초기값, 조건, 증감연산만 다르게 하여 구현 => 코드 재활용 => 결과
[MYSQL] New Companies / 계층구조의 외래키 설정 > 문제 회사의 계층구조 Given the table schemas below, write a query to print the company_code, founder name, total number of lead managers, / total number of senior managers, total number of managers, and total number of employees Order your output by ascending company_code ------------------------------ 출력형식 : 회사코드 , founder 이름 , lead manager 수, senior manager 수, manager 수, employees 수 Note: - The table..
[MYSQL] 자동차 대여 기록별 대여 금액 구하기 문제 분석 테이블 1. CAR_RENTAL_COMPANY_CAR : 대여가능한 자동차들의 정보 2. CAR_RENTAL_COMPANY_RENTL_HISTORY : 렌탈 시작/종료 일 등의 정보 3. CAR_RENTAL_COMPANY_DISCOUNT_PLAN : 대여기간에 따른 할인률 정보 >>문제 요건1 : 자동차 종류는 트럭 요건2. 대여기록별로 대여금액을 출력 요건3. 대여금액 -> 기록ID 순 내림 차순 >>예시 1단계: 트럭 들의 대여기간 구하기 => datediff 함수를 사용하여 각 대여 기간의 이름을 LEFT JOIN하기 위해 => CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블의 기간 이름과 일치시킴 결과 : 트럭이고 DURATION이 계산됨 2단계: 트럭 들의 대여기간 ..
[MYSQL] 입양시각 구하기(2) / 변수로 반복값 만들기 >> 문제 >>예시 >>막혔던 부분 : HOUR을 기준으로 GROUP BY 하면 데이터가 없는 열은 행으로 잡히지 않음 -> 인위적으로 0부터 23까지 만들어줘야 함 > 내가 한 풀이 : 그런데 이렇게 하고 찝찝함이 남음 : 진짜 ROW_NUMBER로 강제적으로 0-23까지 만드는게 맞나?? >>다른 사람들의 풀이 출처 : https://jaaamj.tistory.com/155 [프로그래머스 SQL] 입양 시각 구하기(2) 문제 설명 ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아 jaaamj..
[MYSQL] 년, 월, 성별 별 상품 구매회원 수 구하기 >> 문제 설명 >>문제 USER_INFO 테이블과 ONLINE_SALE 테이블에서 1. 년, 월, 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요. 2. 결과는 년, 월, 성별을 기준으로 오름차순 정렬해주세요. 3. 이때, 성별 정보가 없는 경우 결과에서 제외해주세요. >>예시 >>막혔던 점 - 다양한 GROUP BY절 기준 - JOIN을 통한 각 변수 지정열 - USER_ID를 중복하여 셈(틀린 이유) >>틀린 코드 =>USER_ID가 중복되는 경우에도 USER를 중복하여 세 버림 >>고친 코드 => DISTINCT를 통한 중복열 제거