행(ROW)들의 집합에 대해 연산을 하는 것이므로 행들의 집합 수 만큼 결과가 반환된다. 테이블은 GROUP BY절에 의해 그룹으로 나누어 질 수 있으며 그룹함수(Aggregation Function)는 SELECT문과 HAVING절에 사용 되어 질 수 있다. HAVING절은 GROUP BY 되는 함수에 조건을 주기 위해서 사용 되며 WHERE 절을 이용해서는 안 된다.(그룹핑 칼럼에 조건을 주는 경우는 WHERE절, HAVING절 모두에서 사용가능 하다.)
GROUP BY절을 이용하여 한 테이블에서 행들을 원하는 그룹으로 나누는 것이 가능하며 칼럼 명을 집합 함수와 SELECT절에 이용하고자 한다면 GROUP BY 뒤에 칼럼을 추가 해야 한다. 즉 SELECT절에 그룹함수가 오면 SELECT절의 나머지 칼럼은 GROUP BY절에 나타나야 한다. 또한 GROUP BY절에는 칼럼의 위치 순서 표기(1, 2, 3,,,)나 칼럼 Alias는 사용 할 수 없다.
행(ROW)들의 집합에 대해 연산을 하는 것이므로 행들의 집합 수 만큼 결과가 반환된다. 테이블은 GROUP BY절에 의해 그룹으로 나누어 질 수 있으며 그룹함수(Aggregation Function)는 SELECT문과 HAVING절에 사용 되어 질 수 있다. HAVING절은 GROUP BY 되는 함수에 조건을 주기 위해서 사용 되며 WHERE 절을 이용해서는 안 된다.(그룹핑 칼럼에 조건을 주는 경우는 WHERE절, HAVING절 모두에서 사용가능 하다.)
GROUP BY절을 이용하여 한 테이블에서 행들을 원하는 그룹으로 나누는 것이 가능하며 칼럼 명을 집합 함수와 SELECT절에 이용하고자 한다면 GROUP BY 뒤에 칼럼을 추가 해야 한다. 즉 SELECT절에 그룹함수가 오면 SELECT절의 나머지 칼럼은 GROUP BY절에 나타나야 한다. 또한 GROUP BY절에는 칼럼의 위치 순서 표기(1, 2, 3,,,)나 칼럼 Alias는 사용 할 수 없다.
LIKE : Query 조건으로 와일드카드를 사용 할 때 이용 한다. 와일드 카드인 ‘%’는 0개 이상의 문자, ‘_’(Under bar)는 한 개의 문자를 의미 한다. 또한 비교하려는 문자에 ‘%’, ‘_’등이 포함되어 있어 와일드 카드로서의 의미보다는 문자로서(리터럴값 자체)의 의미를 나타내기 위해서는 ESCAPE 옵션을 이용 한다.
SQL 함수를 크게 나눈다면 단일 행 함수와 복수 행 함수 2가지로 구분 할 수 있다. 단일 행 함수는 각각의 행에 대해 수행 되어 행 당 하나의 결과를 반환하는 함수이며 복수 행 함수는 여러 개의 행에 적용되어 그룹 당 하나의 결과를 반환하는 함수이다.
집합 함수(Aggreation Function)는 복수 행 함수이고 나머지 함수 문자함수, 숫자함수, 날짜함수, 분석용 함수, 기타함수는 단일 행 함수이다.
[Number Function]
ABS(n) : 인수 n의 절대값을 반환
CEIL(n) : 인수 n보다 크거나 같은 최소 정수를 반환
EXP(n) : e(2.718…)의 n승을 반환
FLOOR(n) : 인수 n보다 작거나 같은 최대 정수를 반환
MOD(m, n) : 인수 m을 n으로 나눈 나머지를 반환
POWER(m, n) : 인수 m의 n 지수승을 반환
ROUND(m, n) : 인수 m을 소수이하 n 자리까지 표시하는데 반올림 한다.
SIGN( n) : n이 음수면 -1, 양수이면 1, 0이면 0을 리턴한다.
TRUNC(m, n) : 인수 m을 소수이하 n 자리까지 표시 하는데 절삭 한다.
WIDTH_BUCKET(n, min_value, max_value, num_buckets)
: 인수n을 min_value, max_value 범위로 num_buckets 만큼 등급을 나누어 표시한다.
LIKE : Query 조건으로 와일드카드를 사용 할 때 이용 한다. 와일드 카드인 ‘%’는 0개 이상의 문자, ‘_’(Under bar)는 한 개의 문자를 의미 한다. 또한 비교하려는 문자에 ‘%’, ‘_’등이 포함되어 있어 와일드 카드로서의 의미보다는 문자로서(리터럴값 자체)의 의미를 나타내기 위해서는 ESCAPE 옵션을 이용 한다.
SQL 함수를 크게 나눈다면 단일 행 함수와 복수 행 함수 2가지로 구분 할 수 있다. 단일 행 함수는 각각의 행에 대해 수행 되어 행 당 하나의 결과를 반환하는 함수이며 복수 행 함수는 여러 개의 행에 적용되어 그룹 당 하나의 결과를 반환하는 함수이다.
집합 함수(Aggreation Function)는 복수 행 함수이고 나머지 함수 문자함수, 숫자함수, 날짜함수, 분석용 함수, 기타함수는 단일 행 함수이다.
[Number Function]
ABS(n) : 인수 n의 절대값을 반환
CEIL(n) : 인수 n보다 크거나 같은 최소 정수를 반환
EXP(n) : e(2.718…)의 n승을 반환
FLOOR(n) : 인수 n보다 작거나 같은 최대 정수를 반환
MOD(m, n) : 인수 m을 n으로 나눈 나머지를 반환
POWER(m, n) : 인수 m의 n 지수승을 반환
ROUND(m, n) : 인수 m을 소수이하 n 자리까지 표시하는데 반올림 한다.
SIGN( n) : n이 음수면 -1, 양수이면 1, 0이면 0을 리턴한다.
TRUNC(m, n) : 인수 m을 소수이하 n 자리까지 표시 하는데 절삭 한다.
WIDTH_BUCKET(n, min_value, max_value, num_buckets)
: 인수n을 min_value, max_value 범위로 num_buckets 만큼 등급을 나누어 표시한다.
"R을 이용한 데이터 처리 & 분석 실무 - 서민구 지음" 정리 자료 #2
- https://thebook.io/006723/
- 첫번째 : goo.gl/FJjOlq
- 두번째 : goo.gl/Wdb90g
- 세번째 : goo.gl/80VGcn
- 네번째 : goo.gl/lblUsR
[함수형 사고] 책을 읽고 진행한 PT
Java 8, Scala, Clojure, Groovy 등의 함수형 프로그래밍 언어에서 사용하고 있는 패러다임을 익힐 수 있습니다.
책을 요약하고 PT를 진행하려고 하니 미숙한 부분이 많으니, 자세한 부분은 책을 참고 부탁드립니다.
책에서는 주로 Groovy에 대한 코드가 많았는데, Scala에 조금 더 익숙하기 때문에 Scala로 작성한 코드가 많습니다.
"R을 이용한 데이터 처리 & 분석 실무 - 서민구 지음" 정리 자료 #3
- https://thebook.io/006723/
- 첫번째 : goo.gl/FJjOlq
- 두번째 : goo.gl/Wdb90g
- 세번째 : goo.gl/80VGcn
- 네번째 : goo.gl/lblUsR
5. 1. 단읷행 함수(2) – 종류
구분 종류
LTRIM 왼쪽 빈공갂, 특수문자 제거
UPPER 소문자->대문자 변환
LOWER 대문자->소문자 변환
SUBSTR 문자열 자르기
ROUND 숫자 반올림
TRUNC 숫자 버림
MOD 나누기
SYSDATE 현재날짜 가져오기
ADD_MONTHS 지정핚 MONTH + or -
TO_CHAR 문자로 데이터타입 변환
NVL NULL VALUE처리
DECODE IF, CASE문과 흡사
출처: http://docs.oracle.com/database/122/SQLRF/Single-Row-Functions.htm#SQLRF51178
21. 2. 집계 함수(2) – 목록
구분 설명
AVG 그룹의 평균을 데이터에서 집계후 반환.
MAX 그룹의 최대값을 데이터에서 집계후 반환.
MIN 그룹의 최소값을 데이터에서 집계후 반환.
COUNT 그룹의 총 개수를 데이터에서 집계후 반환.
SUM 그룹의 누적 합계를 데이터에서 집계후 반환.
24. 3. 분석 함수(1) – 종류
구분 종류
순위 관련
RANK, DENSE_RANK,
ROW_NUMBER
집계함수 관련
SUM, MAX,
MIN, AVG, COUNT
순서 관련 함수
FIRST_VALUE, LAST_VALUE,
LAG, LEAD
그룹 내 비율 관련 함수
CUME_DIST,
PERCENT_RANK,
NTILE,
RATIO_TO_REPORT
자세핚 설명: http://wiki.gurubee.net/pages/viewpage.action?pageId=26744104
25. 3. 분석 함수(2) – 문법(1)
SELECT AGGREGATE_FUNCTION(COLUMN_NAME)
OVER
(
[PARTITION BY COLUMN]
[ORDER BY COLUMN {DESC or ASC}]
[WINDOWING(Rows | Range A or Between A and
B)]
)
FROM 테이블명;
26. 3. 분석 함수(3) – 문법(2)
PARTITION BY COLUMN
-전체 집합을 기준에 의해 소그룹으로 나눔(분석함수의
GROUP BY 역핛을 함).
ORDER BY COLUMN
-PARTITION BY에 의해 혹은 집계함수로 출력된 결과의 소그
룹 정렬.
27. 3. 분석 함수(4) – 문법(3)
WINDOWING(Rows | Range A or Between A and B)
-행을 세밀핚 기준으로 조정.
-RANGE는 값이며, ROWS는 행의 수를 의미.
BETWEEN(A부분)
-UNBOUNDED PRECEDING(윈도우 시작 위치가 첫번째 ROW)
-숫자 PRECEDING(해당 행의 [숫자맊큼의]앞)
-CURRENT ROW(윈도우의 현재 ROW)
BETWEEN(B부분)
-UNBOUNDED FOLLOWING(윈도우 마지막 위치가 마지막 ROW)
-CURRENT ROW(윈도우의 현재 ROW)
-숫자 FOLLOWING(해당 행의 [숫자맊큼의]뒤)
30. 4. 예제(참조: employees 테이블)
1. 근속연수가 10년 이상 된 사원들이 몇 명읶지 출력 하세요
(MONTHS_BETWEEN 함수 활용).
2. 급여가 10,000달러 이상은 „HIGH‟로, 10,000달러 미맊은
„LOW‟로 출력하세요.(CASE문 사용~)
3. 각 사원들의 급여가, 부서별 최대급여 대비(%) 얼마나 받고
있는지 출력하세요.(분석함수 활용~)
4. 사원 별 급여와 부서별 최대급여를 출력하세요.