본문 바로가기

전체 글

(49)
MySQL : EXISTS 1. EXISTS (NOT EXIST)EXISTS는 서브쿼리에서 반환된 결과가 존재하는 여부를 확인하는 연산자 입니다. 조건에 맞는지 여부만을 따져 참, 거짓을 반환합니다. 개념을 쉽게 파악하기 위해 프로그래머스에서 예제를 하나 가져와서 설명 해보겠습니다. 이 문제는 업그레이드 할 수 없는 아이테을 구하는 문제입니다. ITEM_TREE 라는 테이블에는 ITEM_ID와 이 아이템의 부모 ID, 즉, ITEM_PARENT_ID가 존재합니다. 만약 ITEM_PARENT_ID가 NULL 이라면 이 아이템은 가장 기본 아이템일 것이고, 만약 어떤 아이템의 ITEM_PARENT_ID가 아닌 아이템은 더 이상 업그레이드 할 수 없는 아이템입니다. 흔히 보는 TREE 문제에서 ROOT, INNER, LEAF 중 LE..
MySQL : Window 1. window 함수 정의 winodw 함수 역시 groupby와 유사한 집계 함수입니다. 하지만 groupby가 특정 group에 대한 집계 값을 나타내는 반면 window는 현재 행을 기준으로 지정한 범위(window)에 있는 행들을 대상으로 집계한 결과를 표현합니다. 즉 groupby가 그룹 별로 1행으로 축소 되는데 비해, window는 원본행은 그대로유지하는 특징이 있습니다. 항목Group ByWindow Function결과 행 수 그룹별 1행으로 축소 원본 행 그대로 유사용 목적그룹 집계 (합계, 평균 등)그룹 내 순위, 누적합계, 이동 집함SUM( ), AVG( ), COUNT( )RANK( ), ROW_NUMBER( ) 등 window 함수의 기본 형태에 대해 알아봅시다. window..
MySQL : GroupBy 1. Group By 구조테이블에서 데이터를 단순히 선택하기 위해서는 select from where 문구를 사용합니다. MySQL workbench에 있는 world.city DB를 이용한 예시입니다. countrycode가 AFG인 데이터만 추출한 결과 입니다. select * from world.citywhere countrycode = 'AFG';IDNameCountryCodeDistrictPopulation1KabulAFGKabol17800002QandaharAFGQandahar2375003HeratAFGHerat1868004Mazar-e-SharifAFGBalkh127800 그런데 만약 country code 별로 인구의 평균은 얼마가 되는지, 또는 지역별 인구의 총 합은 어떻게 되는지와 같..
MySQL 실행순서 MySQL의 실행 순서는 다음과 같습니다.구문순서역할DISTINCT7중복 제거SELECT6WHERE에서 필터링된 데이터에서 선택할 컬럼 선언 FROM1데이터를 불러올 테이블 지정ON2JOIN 조건 평가WHERE3테이블에서 불러올 데이터의 조건 지정GROUP BY4SELECT의 컬럼 데이터의 그룹화 HAVING5그룹화된 데이터들에 대한 필터 ORDER BY8SELECT 된 컬럼들의 정렬 순서LIMIT9출력 제한 https://datathings.tistory.com/62 20 번의 평균 연봉 조회하기 문제를 보면, GROUP BY 에서 선택하지 않은 컬럼이 SELECT에서 선택된 것을 볼 수 있습니다. 만약 GROUP BY의 실행 순서가 더 먼저라면, GROUP에 포함되지 않은 컬럼을 집계 함수 사용 없..
[프로그래머스] MySQL : GroupBy https://school.programmers.co.kr/learn/courses/30/lessons/151139 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기- START_DATE 기준으로 특정 기간 동안의 대여 횟수를 계산- 대여 횟수 기준을 만족하는 CAR_ID를 CAR_LIST 테이블에 저장- 월별, CAR_ID 별 대여 횟수를 집계해야 함. 달을 표현하기 위해 MONTH 명령어 사용 - GROUP BY 적용 결과에 대한 조건문은 HAVING을 사용 - SELECT FROM 의 경우에는 WHERE를 사용 WITH CAR_LIST AS (SELE..
[프로그래머스] MySQL : Join https://school.programmers.co.kr/learn/courses/30/parts/17046 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. 주문량이 많은 아이스크림들 조회하기- 두 테이블에 존재하는 주문량을 합치기 위해 join- 동일한 flavor에 대해 여러 shipment가 존재하는경우 group by로 전체 주문량 합산 - 주문량 내림 차순 및 상위 특정갯수 선택 SELECT F.FLAVOR FROM FIRST_HALF AS FJOIN (SELECT FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDERFROM JULY GROUP BY FLAVOR) AS J ON..
for문 1. for문 정의와 구조 for문은 while문과 동일하게 반복 처리를 위한 문법입니다. while 문이 조건이 만족하는 동안 횟수 제한 없이 계속 반복을 하는 것이 비해, for 문은 주로 횟수 제한이 있는 경우에 사용합니다. 물론 지난 번 예제에서 처럼 while 문도 특정 변수의 값을 일정하게 변경하며 조건문에서 사용하거나, break를 이용해 중단할 수도 있긴 합니다. 예제를 통해 for 문의 구조에 대해 알아 봅시다. test = ['a','b','c']for i in test: print(i)abc for 문에서는 반복할 요소를 in 뒤에 입력합니다. 위 예제에서는 test 라는 이름으로 정의된 리스트를 입력 하였습니다. for 문은 이 리스트의 첫번째 값 부터 차례로 i 에 대입한뒤,..
while문 1. while문 정의와 구조while문은 반복 처리를 할 때 사용하는 문법입니다. 반복문에는 반복을 수행하는 조건을 항상 필요로 합니다. 만약 조건이 없다면 무한루프에 빠지게 되고, 이는 프로그램의 에러로 이어집니다. 반복문의 구조는 다음과 같습니다. while 문은 while로 시작하고 조건을 입력한 뒤에 콜론 ( : ) 을 붙입니다. 만약 while 문 뒤에 위치하는 조건문이 참일 경우에는 while 문의 단락의 코드를 실행하고 만약 참이 아닌 경우에는 루프를 빠져나가게 됩니다. 1에서 10까지의 수를 더하는 코드를 while 문으로 작성하면 아래와 같이 구현할 수 있습니다. total = 0i = 1while i 먼저 결과 값을 저장할 변수를 total 이라고 짓고 초기값으로 0을 입력합니다. ..