SQL 10

[프로그래머스] 멸종위기의 대장균 찾기(재귀함수), 잡은 물고기 중 가장 큰 물고기의 길이 구하기(concat), 노선별 평균 역 사이 거리 조회하기 (order by)

문제 - 멸종위기의 대장균 찾기각 세대별 자식이 없는 개체의 수(COUNT)와 세대(GENERATION)를 출력하는 SQL문을 작성해주세요. 이때 결과는 세대에 대해 오름차순 정렬해주세요. 단, 모든 세대에는 자식이 없는 개체가 적어도 1개체는 존재합니다.WITH RECURSIVE GEN AS ( SELECT ID, PARENT_ID, 1 AS GENERATION FROM ECOLI_DATA WHERE PARENT_ID IS NULL UNION ALL SELECT E.ID, E.PARENT_ID, 1+ G.GENERATION AS GENERATION FROM GEN AS G..

SQL 2025.06.07

[프로그래머스]대장균 크기에 따라 분류하기2 (PERCENT_RANK), 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기

문제 - 대장균 크기에 따라 분류하기2대장균 개체의 크기를 내름차순으로 정렬했을 때 상위 0% ~ 25% 를 'CRITICAL', 26% ~ 50% 를 'HIGH', 51% ~ 75% 를 'MEDIUM', 76% ~ 100% 를 'LOW' 라고 분류합니다. 대장균 개체의 ID(ID) 와 분류된 이름(COLONY_NAME)을 출력하는 SQL 문을 작성해주세요. 이때 결과는 개체의 ID 에 대해 오름차순 정렬해주세요 . 단, 총 데이터의 수는 4의 배수이며 같은 사이즈의 대장균 개체가 서로 다른 이름으로 분류되는 경우는 없습니다.WITH RANKED_ECOLI AS ( SELECT ID, PERCENT_RANK() OVER (ORDER BY SIZE_OF_COLONY DES..

SQL 2025.06.05

[GROUP BY] 입양 시간 구하기 | 진료과별 총 예약 횟수 출력하기

문제: 프로그래머스 - 입양 시각 구하기 (1) 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다 접근 방법 처음에는 CASE를 사용해서 시간대별로 분류를 해줘야 하나 생각했다.. ex. CASE WHEN 9 = COUNT해주기 -- 코드를 입력하세요 SELECT MCDP_CD AS 진료과코드, COUNT(1) AS 5월예약건수 FROM APPOINTMENT WHERE APNT_YMD LIKE '2022-05%' GROUP BY MCDP_CD ORDER BY 2, MCDP_CD

SQL 2024.01.30

[SQL]UNION, EXCEPT, INTERSECT, COALESCE, NULLIF, WINDOW함수

UNION 합집합 여러개의 테이블들이나 SELECT 결과를 하나의 결과로 합쳐줌 UNION vs UNION ALL : UNION은 중복을 제거 EXCEPT (MINUS) 하나의 SELECT 결과에서 다른 SELECT 결과를 빼주는 것이 가능 INTERSECT (교집합) 여러 개의 SELECT 문에서 같은 레코드들만 찾아줌 와 열심히 필기 했는데 다 날라갔음... 어리둥절.. 6주차 5번째 강의 다시 들어야겠다. 어차피 SQL 기초 문법도 다 이해못했음ㅋ...고급문법 어려워서 이해 다 못했음... 괜찮아.. 또 들으면 되지..

SQL 2024.01.04

[SQL] BOOLEAN, NULL 값 처리하기|채널별 월별 매출액 테이블 만들기

BOOLEAN 타입 처리 flag = True 와 flag is True 는 동일한 표현. flag is True 와 flag is not False 는 다른 표현 => flag가 True 이거나 Null 일 수도 있기 때문 %%sql SELECT COUNT(CASE WHEN flag = True THEN 1 END) true_cnt1, -- flag가 true인 경우 1씩 더하고 cnt1에 저장 COUNT(CASE WHEN flag is True THEN 1 END) true_cnt2, -- flag is true이면 1씩 더하고 cnt2에 저장 COUNT(CASE WHEN flag is not False THEN 1 END) not_false_cnt -- falg is not false면 1씩 더해서..

SQL 2024.01.02

[SQL]JOIN이란? INNER, LEFT, FULL, CROSS JOIN

JOIN이란? 두 개 혹은 그 이상의 테이블을 공통 필드를 가지고 머지하는데 사용된다. 이는 스타 스키마로 구성된 테이블들로 분산되어 있던 정보를 통합하는데 사용된다. FULL JOIN : 양 쪽 테이블 정보 모두 저장. CROSS JOIN: 모든 테이블에 대해서 조인하여 n*m 개의 컬럼을 갖게 됨 JOIN 문법 SELECT A.*, B.* FROM table1 A (INNER, FULL, LEFT, CROSS) JOIN table2 B ON A.key1 = B.key2 WHERE A.ts >= '2019-01-01'; JOIN시 고려해야할 점 중복 레코드가 없고, PK의 uniqueness가 보장되어야 함 조인하는 테이블간의 관계를 명확하게 정의 - one to one 완전한 one to one: u..

SQL 2024.01.02

[SQL]GROUP BY와 CTAS, 데이터 품질 확인하기

1. GROUP BY & Aggregate 함수 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산 테이블에 존재하는 필드 선택하고, 그 값을 기준으로 그룹화 - 그룹핑을 할 필드 결정 ( 하나 이상의 필드 가능) - GROUP BY 로 지정 (필드 이름을 사용하거나 필드 일련번호 사용) - 다음 그룹별로 계산할 내용 결정 - Aggregate 함수 사용: count, sum, avg, min, max 등.. ex. 월별 세션수를 계산하는 SQL %%sql SELECT LEFT(ts, 7) AS mon, --ts필드에서 앞자리 7개만 출력 하고 mon으로 저장 COUNT(1) AS session_count -- 월별로 몇개의 기록이 있는지 확 FROM raw_data.session_timestamp..

SQL 2024.01.01

[SQL] google colab으로 sql 실습하기

%%sql SELECT DISTINCT channel -- 유일한 채널 이름을 알고 싶은 경우 FROM raw_data.user_session_channel; SELECT channel, COUNT(1) -- 채널별 카운트를 하고 싶은 경우. COUNT 함수!! FROM raw_data.user_session_channel GROUP BY 1; 결과값 Naver 16921 Facebook 16791 Youtube 17091 Instagram 16831 Organic 16904 Google 16982 %%sql SELECT channel, CASE WHEN channel in ('Facebook', 'Instagram') THEN 'Social-Media' -- 페이스북, 인스타 채널이면 social-me..

SQL 2024.01.01

[MySQL]MySQL DB 구축하기 - Excel 파일 올리기

My SQL DB에 엑셀파일 데이터를 적재하기 위해서는 세 가지 방법이 있다. 1. LOAD DATA LOCAL INFILE '파일.csv' INTO TABLE name 2. Import Wizard 사용하기 3. 파이썬에서 엑셀 -> 데이터 프레임 -> MySQL 연동 후 적재하기 이번 팀프로젝트에서는 3번 방법을 사용해서 DB에 데이터를 적재했다. AWS RDS 라는 클라우드 DB를 사용했기 때문에 1번 방법은 사용이 불가능했고, 엑셀 파일 용량이 꽤 있었기 때문에 2번은 시간이 너무 오래 걸려서 패스했다. 파이썬으로 Excel 파일 MySQL DB에 업로드하기 1. 필요한 라이브러리 install & import import pandas as pd import chardet import pymysq..

SQL 2023.12.15

[TIL]KEY-VALUE|JSON_OBJECT,EXTRACT|JSON_INSERT,REPLACE

Key-value key를 통해 value에 접근가능 JSON 타입으로 key-value 저장 ex. {'이름':'홍길동, '색상':['빨강','파랑']} JSON_OBJECT Key-value 값을 JSON 객체로 반환 ex. JSON_OBEJCT('off', JSON_ARRAY('일','월'), 'substitue', '민수')) key: off, value:'일','월' key: substitiute, value:'민수' JSON_EXTRACT key, value에서 원하는 값을 가져올때 사용 Array 인덱싱: $[index] JSON_EXTRACT(col, '$.key') : $.key off라는 키에 JSON_ARRAY함수를 통해 배열 값 지정 off 키에 해당하는 값 출력 off키의 값 중 ..

SQL 2023.12.08