본문 바로가기

전체 글

(82)
[SQL] 프로그래머스 고득점 kit - JOIN 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기SQL의 실행 순서에 따라, FROM - JOIN - WHERE - GROUP BY - HAVING - SELECT - ORDER BY에서select보다 앞에 있으면 별칭을 쓸 수가 없음. 그러나 having은 모종의 이유로 쓸 수 있음. order by 도 당연히 가능.with discount_rates as ( select car_type, discount_rate from car_rental_company_discount_plan where car_type in ('SUV', '세단') and duration_type = '30일 이상'),unavailable_ones as (select distinct car_id from car_r..
[견고한] Chapter 1: 데이터 엔지니어링 상세 (및 용어정리) ※ 조 라이스와 맷 하우슬리가 공동으로 집필한 '견고한 데이터 엔지니어링'을 공부하면서, 중요한 내용들을 기록해둔 공간입니다. 데이터 엔지니어로써 중요하다고 생각되는 개념들에 대해 자체적으로 공부하며 정리한 글입니다. 데이터 엔지니어링이란?데이터 엔지니어링은 간단히 정리하면, 시중에 나와있는 정보를 뽑아와서 (추출 - extract), 우리가 필요한 형태로 조작해서 (가공 - transform), 데이터 분석가 혹은 데이터 과학자가 활용할 수 있게 전달 (저장 - load) 하는 직군이다. 데이터 과학의 업스트림에 위치하며, 이 일련의 과정을 ETL이라고 부르기도 한다. 그래서 원천 시스템에서 데이터를 가져오는 것부터 시작해 분석 또는 머신러닝과 같은 사용 사례에 데이터를 제공하는 것까지를 해당 데이터의..
[SQL] 프로그래머스 고득점 kit - IS NULL 경기도에 위치한 식품창고 목록 출력하기select warehouse_id, warehouse_name, address, case when freezer_yn is null or freezer_yn = 'N' then 'N' else 'Y' end freezer_ynfrom food_warehouse where substring(address,1,3) = '경기도' order by warehouse_id  이름이 없는 동물의 아이디select animal_id from animal_ins where name is null order by animal_id  이름이 있는 동물의 아이디select animal_id from animal_ins where name is not null order by anima..
[SQL] 프로그래머스 고득점 kit - GROUP BY GROUP BY는 기본적으로, 데이터 그룹화 및 집계 작업의 핵심 기능임. 데이터를 특정 컬럼 값에 따라 그룹으로 묶고, 각 그룹에 대해 집계 함수를 적용할 때 사용됨. 예를 들어, employees 라는 테이블이 있고, employee_id, department_id, job_id, salary가 있을 때,특정 부서의 특정 직위가 받는 평균 연봉이 얼마인지 확인하려면 어떻게 해야하나? group by를 써서 딕셔너리로 치면 "key"가 되는 튜플을 만들어주면 됨.SELECT department_id, job_id, AVG(salary) AS avg_salaryFROM employeesGROUP BY department_id, job_id; 그럼 결과적으로 이렇게 dep_id와 job_id를 묶어서 하나..
[SQL] 프로그래머스 고득점 kit - select 관련 일단 키워드들을 외우기 전에, SQL 명령어의 기본 form부터 정리함 : 크게 4가지 - DDL, DML, DQL, DCL 1) DDL: Data Definition Language: 데이터베이스 구조 정의ex) create: 새로운 DB 생성, drop: 테이블 제거 2) DML: Data Manipulation Language: 데이터 조작ex) insert~values: 데이터를 테이블에 삽입, update: 테이블 데이터 수정, delete: 테이블 데이터 제거 3) DQL: Data Query Language: 데이터 조회ex) select~from~where, select~from~order by, select~from~group by~having 4) DCL: Data Control Lan..
[알고리즘] 충돌위험 찾기, 가장 많이 받은 선물, 도넛과 막대 그래프 충돌위험 찾기매우매우 꼬여있는 문제다. 처음 읽을 때는 안 그래보이지만, 막상 시작하면 어떻게 자료구조를 구축하느냐에 따라 매우매우 더러워질 수 있는 여지가 있는 문제다. 그러나 이는 구현의 영역이다. 중요한 것을 두 가지 깨달았다. 1 dictionary를 iterate 할때는 dictionary의 사이즈를 바꾸면 안된다. 나는 어차피 이미 해당 iteration이 끝나고 반영되기도 하고 list처럼 순서를 신경 쓰는 자료구조가 아니므로 문제없을 줄 알았는데, 이도 안된다는 것을 확인했다. 2 파이썬의 공간복잡도 제한은 생각보다 널널하다. 다른 사람의 풀이 중, 이걸 그냥 모든 로봇의 경로를 리스트화 한 다음 - 각 성분은 x,y,ind - 그걸 단순 비교해준 풀이도 있었다. 그렇게 하면 경로가 길어질..
[알고리즘] 동영상 재생기, 퍼즐 게임 챌린지, 충돌위험 찾기 동영상 재생기문자열 앞에 "0"값을 채우는 함수는 string_number.zfill(n)0이 아니라 다른 것으로 채우고 싶다면 string_number.rjust(n, "a")format도 있지만 외우지는 말자 내 풀이def solution(video_len, pos, op_start, op_end, commands): def trim(val): mn, sc = val.split(':') return int(mn)*60 + int(sc) video_len = trim(video_len) pos = trim(pos) op_start = trim(op_start) op_end = trim(op_end) if op_start   ..
[알고리즘] 실습용 로봇, 석유 시추, 보물 지도 실습용 로봇방향성을 다루는 부분을 단순하게 표현하기만 하면 금방 푸는 문제. 내 풀이def solution(command): x, y = 0, 0 dir_x, dir_y = 0, 1 for com in command: if com == 'G': x, y = x+dir_x, y+dir_y elif com == 'B': x, y = x-dir_x, y-dir_y elif com == 'R': dir_x, dir_y = dir_y, -dir_x else: dir_x, dir_y = -dir_y, dir_x return [x, y]  석유 시추2D를 traverse 하다가, 기름이 나타나면 그 기름이 속한 덩어리..