SQL

코딩테스트 스터디/프로그래머스

[LV2/스택/큐] 기능개발

[풀이] 처음 풀이 def solution(progresses, speeds): answer = [] while True: cnt = 0 while True: if len(progresses) != 0: if progresses[0] >= 100: progresses.pop(0) speeds.pop(0) cnt += 1 else: if cnt > 0: answer.append(cnt) break else: answer.append(cnt) break if len(progresses) != 0: for i in range(len(progresses)): progresses[i] += speeds[i] else : break return answer 가장 먼저 progresses의 length를 판단해서 p..

코딩테스트 스터디/프로그래머스

[LV3/SQL] 헤비 유저가 소유한 장소

https://school.programmers.co.kr/learn/courses/30/lessons/77487 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SELECT * FROM PLACES WHERE HOST_ID IN (SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(*) >= 2); 서브쿼리로 간단하게 풀 수 있는 문제였습니다. HOST_ID를 GROUP BY 한 것으로 COUNT를 세고, COUNT가 2보다 큰 HOST_ID를 가져와서 HOST_ID가 해당 튜플 안에 존재하는 걸..

코딩테스트 스터디/프로그래머스

[LV2 SQL] 조건에 맞는 도서와 저자 리스트 출력하기(JOIN 에서 WHERE 와 ON 의 차이)

https://school.programmers.co.kr/learn/courses/30/lessons/144854 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SELECT BOOK_ID, AUTHOR_NAME, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') as PUBLISHED_DATE FROM BOOK INNER JOIN AUTHOR ON BOOK.CATEGORY = '경제' and BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID ORDER BY PUBLISHED_DATE; WHERE로 풀어도 상관 없..

데이터 엔지니어링/실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트

[4주차] 트랜잭션

트랜잭션 Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법 BEGIN과 END 혹은 BEGIN과 COMMIT 사이에 해당 SQL들을 사용 ROLLBACK 두 가지 종류의 트랜잭션이 존재 AutoCommit False를 쓰면 트랜잭션을 사용할 필요 없으나, AutoCommit True일 때는 정합성 문제를 일으킬 수 있는 SQL을 묶어줘야한다. 레코드 변경을 바로 반영하는지 여부. autocommit이라는 파라미터로 조절가능 autocommit=True 기본적으로 모든 SQL statement가 바로 커밋됨 이를 바꾸고 싶다면 BEGIN;END; 혹은 BEGIN;COMMIT을 사용 (혹은 ROLLBACK) autocommit=False 기본적으로 모든 SQL statement..

데이터 엔지니어링/실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트

SQL 윈도우 함수 요약, 예제

WINDOW FUNCTION 개요 행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수가 윈도우 함수 윈도우 함수는 집계함수 뿐만 아니라, 새로운 윈도우 함수 전용 만들어진 기능도 있음 윈도우 함수는 다른 함수와 중첩 X, 서브쿼리에는 사용 가능 윈도우 함수 종류 그룹 내 순위(RANK) 관련 함수: RANK, DENSE_RANK, ROW_NUMBER 그룹 내 집계(AGGREGATE) 관련 함수 : SUM, MAX, MIN, AVG, COUNT (sql server는 OVER 절의 OREDER BY 지원 X) 그룹 내 행 순서 관련 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD (오라클에서만 지원) 그룹 내 비율 관련 함수 : CUME_DIST, PERCENT_RANK, NTILE..

데이터 엔지니어링/데이터베이스 및 운영체제

데이터베이스 모델링

데이터베이스 모델링 1. 요구사항 수집 및 분석 실제 문서를 수집하고 분석함. 담당자와의 인터뷰나 설문조사를 통해 요구사항을 직접 수렴함. 비슷한 업무를 처리하는 기존의 데이터베이스를 분석함. 각 업무와 연관된 모든 부분을 살펴봄. 2. 개념적 모델링 개념적 모델링(conceptual modeling) : 요구사항을 수집하고 분석한 결과를 토대로 업무의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정 개체(entity)를 추출하고 각 개체들 간의 관계를 정의하여 ER 다이어그램(ERD, Entity Relationship Diagram)을 만드는 과정까지를 말함. 3. 논리적 모델링 개념적 모델링에서 만든 ER 다이어그램을 사용하려는DBMS에 맞게 사상(매핑, mapping)하여 실제 데이터베이스로..

데이터 엔지니어링/데이터베이스 및 운영체제

데이터베이스 프로그래밍(PL/SQL)

1. PL/SQL Procedural Language/Structured Query Language의 줄임말로 데이터베이스 응용 프로그램을 작성하는 데 사용하는 오라클의 SQL 전용 언어. SQL 전용 언어로 SQL 문에 변수, 제어, 입출력 등의 프로그래밍 기능을 추가하여 SQL 만으로 처리하기 어려운 문제를 해결함. PL/SQL은 SQL Developer에서 바로 작성하고 컴파일한 후 결과를 실행함 파이썬, 자바로 DB 데이터를 뽑아서도 가능하나 확실히 속도가 빠르다. 2. 프로시저 리턴 값이 없음, 리턴 값이 있으면 함수 2.(1) 삽입 작업 프로시저 프로시저로 데이터를 삽입 작업을 하면 좀 더 복잡한 조건의 삽입 작업을 인자 값만 바꾸어 수행할 수도 있고, 저장해두었다가 필요할 때마다 호출하여 사..

데이터 엔지니어링/데이터베이스 및 운영체제

SQL - 뷰

뷰의 생성 뷰(VIEW)는 하나 이상의 테이블을 합하여 만든 가상의 테이블 장점 편리성 및 재사용성 : 자주 사용되는 복잡한 질의를 뷰로 미리 정의해 놓을 수 있음. → 복잡한 질의를 간단히 작성 보안성 : 각 사용자별로 필요한 데이터만 선별하여 보여줄 수 있음. 중요한 질의의 경우 질의 내용을 암호화할 수 있음. 개인정보(주민번호)나 급여, 건강 같은 민감한 정보를 제외한 테이블을 만들어 사용 독립성 제공 : 미리 정의된 뷰를 일반 테이블처럼 사용할 수 있기 때문에 편리함. 또 사용자가 필요한 정보만 요구에 맞게 가공하여 뷰로 만들어 쓸 수 있음. 원본테이블이 구조가 변하여도 응용에 영향을 주지 않도록하는 논리적 독립성 제공 카티션 프로덕트 연산 시간이 오래 걸리는 것에 대해서, 미리 뷰로 만들어 놓고..

데이터 엔지니어링/데이터베이스 및 운영체제

SQL 서브쿼리(부속질의)

부속질의(SUBQUERY)란? 하나의 SQL 문 안에 다른 SQL 문이 중첩된 쿼리를 말함. 다른 테이블에서 가져온 데이터로 현재 테이블에 있는 정보를 찾거나 가공할 때 사용함. 보통 데이터가 대량일 때 데이터를 모두 합쳐서 연산하는 조인보다 필요한 데이터만 찾아서 공급해주는 부속질의가 성능이 더 좋음. 주질의(main query, 외부질의)와 부속질의(sub query, 내부질의)로 구성됨. 부속질의의 위치 SELECT 절 : SELECT 절에서 사용되며 단일 값을 반환하기 때문에 스칼라 부속질의라고함 스칼라나 벡터를 나오게 끔 해서 쓰면 됨(값 하나, 1차원 배열) FROM 절 : FROM 절에서 결과를 뷰(VIEW) 형태로 반환하기 때문에 인라인 뷰라고 함 2차원 값, 즉 요약된 테이블 형태로 나오..

데이터 엔지니어링/데이터베이스 및 운영체제

SQL_기초(JOIN)

카티전 프로덕트(CATESIAN PRODUCT) 두 릴레이션을 연결시켜 하나로 합칠 때 사용함. 결과 릴레이션은 첫번째 릴레이션의 오른쪽에 두번째 릴레이션의 모든 투플을 순서대로 배열하여 반환한다. 결과 릴레이션 차수는 두 릴레이션의 차수의 합이며, 두 릴레이션의 카디날리티 곱임 두 테이블을 단순히 합치는 것을 카티전 프로덕트라고 한다. 이것을 JOIN이라고 한다. 이 때 WHERE로 조건을 명시하는데, 이를 JOIN 조건이라고 한다. SELECT * FROM CUSTOMER, ORDERS WHERE CUSTOMER.CUSTID = ORDERS.CUSTID; ORDER BY CUSTOMER.CUSTID 조인 방법

우상욱
'SQL' 태그의 글 목록