전체 글(169)
-
SQL - JOIN 조인
서로 다른 테이블을 결합할 때 조인을 사용한다. 조인을 하는 방법 1. 두 테이블에서 동일한 컬럼을 찾는다. 2. 레코드를 식별할 수 있는 컬럼으로 결정한다. 위에 두개의 테이블이 있다. 회원별 전화번호를 출력하려고 한다. 따라서 회원정보가 있는 테이블과 전화번호가 있는 테이블을 결합하여 출력을 하면 된다. 두 테이블의 공통 칼럼은 회원코드이다. 회원코드를 이용해서 조인을 하면 다음과 같다. SELECT A.이름, B.전화번호 FORM C_INFO A JOIN PHONE B ON A.회원번호 = B.회원코드; 위와 같이 조인은 다른 테이블과 결합하여 정보를 가져올 때 사용된다. 이제 조인의 종류에 대해 알아보자 조인의 종류 * 교집합 - INNER JOIN( 두 테이블에서 일치하는 데이터만 출력) SEL..
2023.03.13 -
SQL - GROUP 함수들(ROLL UP, CUBE , GROUPING SETS)
ROLL UP - 부분합계와 전체합계 값을 보여준다. - 인수의 순서에 영향을 받는다. ex) SELECT 성별, 연령, SUM( 점수 ) FROM 테스트 GROUP BY ROLLUP(성별, 연령) ORDER BY 성별, 연령; 각 성별에 따른 연령 별 점수합 뿐만 아니라 첫번째 인자인 성별당 합계 그리고 전체합계도 출력을 해준다. 정리하면 ROLLUP(인자1, 인자2) - 인자1 X 인자2 별 집계값 - 인자1 별 집계값 - 전체 집계값 CUBE ex) SELECT 성별, 연령, SUM( 점수 ) FROM 테스트 GROUP BY CUBE(성별, 연령) ORDER BY 성별, 연령; 각 성별에 따른 연령 별 점수합 뿐만 아니라 첫번째 인자인 성별당 합계, 두번째 인자인 연령별 한계, 전체 합계를 출력 해..
2023.03.13 -
SQL - 집계함수, SELECT문 연산 순서, 행 수 제한, ROWID
집계함수 COUNT(*), COUNT(컬럼명) >>> COUNT(*)은 NULL을 포함, COUNT(컬럼명)은 NULL 제외 SUM( [DISTICT | ALL] 컬럼명 ) >>> 합계 AVG( [DISTICT | ALL] 컬럼명 ) >>> 평균 MAX( [DISTICT | ALL] 컬럼명 ) >>> 최댓값 MIN( [DISTICT | ALL] 컬럼명 ) >>> 최소값 STDDEV( [DISTICT | ALL] 컬럼명 ) >>> 표준편차 VARIAN( [DISTICT | ALL] 컬럼명 ) >>> 분산 참고) NULL에 대한 연산 결과는 모두 NULL이다. 통계적 집계함수를 연산할때 NULL은 제외하고 계산한다. ex) NULL * 10 = NULL SELECT문 연산 순서 SELECT 컬럼명 FROM ..
2023.03.13 -
SQL - Group By
위에 테이블에서 성별에 따른 회원수를 count하려고 한다. 이때 group by를 사용해서 count 할 수 있다. SELECT 성별, COUNT(회원코드) FROM MEMEBER_INFO GROUP BY 성별 위의 테이블에서 성별로 GROUP BY해서 출력을 하면 오라클인 경우 다음과 같이 출력이 된다. 출력된 결과를 보면 성별이 NULL인것도 COUNT를 해줬다. 반대로 SQL서버에서는 NULL을 COUNT 안해주고 성별 F, M에 대해서만 COUNT를 해준다. 만약에 SQL 서버에서 NULL을 포함해서 COUNT를 하고 싶다면 NULL을 NVL을 통해서 NULL값을 대체 해주면 된다. SELECT NVL(성별, 'N') AS gender, COUNT(회원코드) cnt FROM MEMEBER_INF..
2023.03.13 -
Graph - 깊이우선탐색(DFS)
한곳을 먼저 깊이 탐색하다가 더이상 갈 수 없을때 다른쪽을 탐색 #DFS #전역변수를 사용한 경우 graph = { 'A' : ['B', 'D', 'E'], 'B' : ['A', 'C', 'D'], 'C' : ['B'], 'D' : ['A', 'B'], 'E' : ['A'] } visited = [] def dfs(current): visited.append(current) for k in graph[current]: if k not in visited: dfs(k) return visited ###################################################### #전역변수 사용 안한 경우 def dfs(graph, current, visited=[]): visited.appe..
2023.03.13 -
그래프 - 너비우선탐색(BFS)
같은 레벨의 노드부터 먼저 탐색 BFS 구현 from collections import deque #BFS def bfs(graph, start): #시작점 start가 들어간 방문목록 visted로 초기화 visited = [start] queue = deque([start])#방문할 노드 목록 queue에 시작점을 담아준다. while queue:#방문할 목록이 없을때까지 반복한다. current = queue.popleft()#방문할 목록에서 방문할 곳을 하나씩 꺼낸다. for k in graph[current]:#방문할 노드에 연결된 노드를 방문하고 다음 방문할 목록에 추가해준다. if k not in visited:#방문한 곳이 아니면 방문하고 방문할 목록에 추가 visited.append(k)..
2023.03.13