Oracle - 집계, 숫자 함수

uglyduck.dev·2020년 9월 26일
0

따라해보기 🎭

목록 보기
6/12

집계 함수

집계 함수는 WHERE절에 사용 불가능

SUM()

합계

SELECT SUM(필드) FROM테이블;

SELECT SUM(BOOK_ID) FROM BOOK;
SELECT SUM(SALARY) FROM EMPLOYEES;

AVG()

평균값

SELECT AVG(필드 FROM테이블;

SELECT AVG(BOOK_ID) FROM BOOK;
SELECT AVG(SALARY) FROM EMPLOYESS WHERE DEPARTMENT_ID = 50;

MAX()

최댓값

SELECT MAX(필드) FROM테이블;

SELECT MAX(BOOK_ID) FROM BOOK;

MIN()

최솟값

SELECT MIN(필드) FROM테이블;

SELECT MIN(BOOK_ID) FROM BOOK;
SELECT MIN(HIRE_DATE) FROM EMPLOYEES;

COUNT()

레코드 개수

SELECT COUNT(*) FROM 테이블;(입력된레코드개수)
SELECT COUNT(필드) FROM 테이블; (지정한필드에입력된데이터 개수)
-> 집계함수의결과는 이다. (검색된 레코드가아니라는의미!)

  • SCORE 80 이상
SELECT COUNT(*) FROM STUDENT_RESULTS WHERE SCORE >= 80; 
  • SCORE평균이상
SELECT COUNT(*) FROM STUDENT_RESULTS WHERE SCORE >= (SELECTAVG(SCORE)FROM STUDENT_RESULTS); 
  • ALL -> 중복 허용, DISTINCT -> 중복 비허용. COUNT() 함수에 적용 가능
SELECT COUNT(ALL FIRST_NAME) FROM EMPLOYEES;
SELECT COUNT(ALL FIRST_NAME), COUNT(DISTINCT FIRST_NAME) FROM EMPLOYEES;

숫자 함수

ABS()

절댓값

SELECT ABS(필드)FROM테이블;

  • 23의 절대값
SELECT ABS(-23) FROM DUAL;
  • DUAL: oracle에서 제공하는 dummy table

SIGN()

부호 값(양수, 음수, 0)

SELECT SIGN(필드) FROM테이블;

SELECT SIGN(23), SIGN(-23), SIGN(0) FROM DUAL;
SIGN(23)SIGN(-23)SIGN(0)
1-10

ROUND(n, i)

반올림

  • n을 소수점 이하 i+1 번째에서 반올림.
  • i(0), i<0 => 소수점 좌측으로 i번째에서 반올림

SELECT ROUND(필드) FROM테이블;
SELECT ROUND(필드, 인덱스) FROM테이블;

SELECT ROUND(0.123), ROUND(0.543) FROM DUAL;
ROUND(0.123)ROUND(2.543)
03
SELECT ROUND(0.12345678, 6), ROUND(2.3423455,4) FROM DUAL;
  • 6번째 자리만 반올림해라, 4번째 자리만 반올림해라
ROUND(0.12345678, 6)ROUND(2,3423455, $)
0.1234572.3423

TRUNC(n1, n2)

  • 잘라내기
  • n1을 n2번째에서 잘라냄

SELECT TRUNC(필드) FROM테이블;
SELECT TRUNC(필드, 인덱스) FROM테이블;

SELECT TRUNC(1234.1234567,0) ZERO FROM DUAL;
ZERO
1234
SELECT TRUNC(1234.1234567,2) FROM DUAL;
TRUNC(1234.1234567,2)
1234.12
SELECT TRUNC(1234.1234,-1) FROM DUAL;
TRUNC(1234.1234,-1)
1230

CEIL()

  • 올림

SELECT CEIL(필드) FROM 테이블;

SELECT CEIL(32.8) CEIL FROM DUAL;
SELECTCEIL(32.3) CEIL FROM DUAL;
CEIL
33

FLOOR()

  • 내림

SELECT FLOOR(필드) FROM 테이블;

SELECT FLOOR(32.8) FLOOR FROM DUAL;
SELECT FLOOR(32.3) FLOOR FROM DUAL;
FLOOR
32

POWER(n2, n1)

  • 제곱
  • n2의 n1 제곱값을 반환
    SELECT POWER(필드, 인덱스) FROM 테이블;
SELECT POWER(4,2) POWER1 FROM DUAL;
POWER1
16

MOD(n2, n1)

  • 나머지 값
  • n2/n1의 나머지값

SELECT MOD(필드, 인덱스) FROM 테이블;

SELECT MOD(7,4) MOD1 FROM DUAL;
MOD1
3

SQRT()

  • 제곱근

SELECT SQRT(필드) FROM 테이블;

SELECT SQRT(2), SQRT(3) FROM DUAL;
SQRT(2)SQRT(3)
1.4142...1.7320...

Reference

profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글