:tocdepth: 3 ************** 수치 ì—°ì‚° 함수 ************** .. contents:: ABS === .. function:: ABS (number_expr) 함수는 ì§€ì •ëœ ì¸ìž ê°’ì˜ ì ˆëŒ€ê°’ì„ ë°˜í™˜í•˜ë©°, 리턴 ê°’ì˜ íƒ€ìž…ì€ ì£¼ì–´ì§„ ì¸ìžì˜ 타입과 같다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param number_expr: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: number_exprì˜ íƒ€ìž… .. code-block:: sql --it returns the absolute value of the argument SELECT ABS(12.3), ABS(-12.3), ABS(-12.3000), ABS(0.0); :: abs(12.3) abs(-12.3) abs(-12.3000) abs(0.0) ================================================================================ 12.3 12.3 12.3000 .0 ACOS ==== .. function:: ACOS ( x ) **ACOS** 함수는 ì¸ìžì˜ ì•„í¬ ì½”ì‚¬ì¸(arc cosine) ê°’ì„ ë°˜í™˜í•œë‹¤. 즉, 코사ì¸ì´ *x* ì¸ ê°’ì„ ë¼ë””안 단위로 반환하며, 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. *x* 는 -1 ì´ìƒ 1 ì´í•˜ì˜ ê°’ì´ì–´ì•¼ 하며, ê·¸ ì™¸ì˜ ê²½ìš° ì—러를 반환한다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT ACOS(1), ACOS(0), ACOS(-1); :: acos(1) acos(0) acos(-1) ================================================================================== 0.000000000000000e+00 1.570796326794897e+00 3.141592653589793e+00 ASIN ==== .. function:: ASIN ( x ) **ASIN** 함수는 ì¸ìžì˜ ì•„í¬ ì‚¬ì¸(arc sine) ê°’ì„ ë°˜í™˜í•œë‹¤. 즉, 사ì¸ì´ *x* ì¸ ê°’ì„ ë¼ë””안 단위로 반환하며, 리턴 ê°’ì€ DOUBLE 타입ì´ë‹¤. *x* 는 -1 ì´ìƒ 1 ì´í•˜ì˜ ê°’ì´ì–´ì•¼ 하며, ê·¸ ì™¸ì˜ ê²½ìš° ì—러를 반환한다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT ASIN(1), ASIN(0), ASIN(-1); :: asin(1) asin(0) asin(-1) ============================================================================== 1.570796326794897e+00 0.000000000000000e+00 -1.570796326794897e+00 ATAN ==== .. function:: ATAN ( [y,] x ) **ATAN** 함수는 탄ì 트가 *x* ì¸ ê°’ì„ ë¼ë””안 단위로 반환한다. ì¸ìž *y* 는 ìƒëžµë 수 있으며, *y* ê°€ ì§€ì •ë˜ëŠ” 경우 함수는 *y* / *x* ì˜ ì•„í¬ íƒ„ì 트 ê°’ì„ ê³„ì‚°í•œë‹¤. 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x,y: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT ATAN(1), ATAN(-1), ATAN(1,-1); :: atan(1) atan(-1) atan2(1, -1) ============================================================================== 7.853981633974483e-01 -7.853981633974483e-01 2.356194490192345e+000 ATAN2 ===== .. function:: ATAN2 ( y, x ) **ATAN2** 함수는 *y* / *x* ì˜ ì•„í¬ íƒ„ì 트 ê°’ì„ ë¼ë””안 단위로 반환하며, :func:`ATAN` 와 ìœ ì‚¬í•˜ê²Œ ë™ìž‘한다. ì¸ìž *x*, *y* ê°€ ëª¨ë‘ ì§€ì •ë˜ì–´ì•¼ 한다. 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x,y: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT ATAN2(1,1), ATAN2(-1,-1), ATAN2(Pi(),0); :: atan2(1, 1) atan2(-1, -1) atan2( pi(), 0) ============================================================================== 7.853981633974483e-01 -2.356194490192345e+00 1.570796326794897e+00 CEIL ==== .. function:: CEIL( number_operand ) **CEIL** 함수는 ì¸ìžë³´ë‹¤ í¬ê±°ë‚˜ ê°™ì€ ìµœì†Œ ì •ìˆ˜ ê°’ì„ ì¸ìžì˜ 타입으로 반환한다. 리턴 ê°’ì€ *number_operand* ì¸ìžë¡œ ì§€ì •ëœ ê°’ì˜ ìœ íš¨ ìžë¦¿ìˆ˜ë¥¼ 따른다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param number_operand: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: INT .. code-block:: sql SELECT CEIL(34567.34567), CEIL(-34567.34567); :: ceil(34567.34567) ceil(-34567.34567) ============================================ 34568.00000 -34567.00000 SELECT CEIL(34567.1), CEIL(-34567.1); :: ceil(34567.1) ceil(-34567.1) ============================= 34568.0 -34567.0 CONV ==== .. function:: CONV (number,from_base,to_base) **CONV** 함수는 숫ìžì˜ 진수를 변환하는 함수ì´ë©°, 진수가 ë³€í™˜ëœ ìˆ«ìžë¥¼ 문ìžì—´ë¡œ 반환한다. ì§„ìˆ˜ì˜ ìµœì†Œê°’ì€ 2, ìµœëŒ€ê°’ì€ 36ì´ë‹¤. ë°˜í™˜í• ìˆ«ìžì˜ 진수를 나타내는 *to_base* ê°€ ìŒìˆ˜ì´ë©´ ìž…ë ¥ 숫ìžì¸ *number* ê°€ 부호 있는(signed) 숫ìžë¡œ 간주ë˜ê³ , ê·¸ ì™¸ì˜ ê²½ìš°ì—는 부호 없는(unsigned) 숫ìžë¡œ 간주ëœë‹¤. *from_base* ë˜ëŠ” *to_base*\ ì— ìˆ«ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param number: ìž…ë ¥ ìˆ«ìž :param from_base: ìž…ë ¥ 숫ìžì˜ 진수 :param to_base: ë°˜í™˜í• ìˆ«ìžì˜ 진수 :rtype: STRING .. code-block:: sql SELECT CONV('f',16,2); :: '1111' .. code-block:: sql SELECT CONV('6H',20,8); :: '211' .. code-block:: sql SELECT CONV(-30,10,-20); :: '-1A' COS === .. function:: COS ( x ) **COS** 함수는 ì¸ìžì˜ 코사ì¸(cosine) ê°’ì„ ë°˜í™˜í•˜ë©°, ì¸ìž *x* 는 ë¼ë””안 ê°’ì´ì–´ì•¼ 한다. 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT COS(pi()/6), COS(pi()/3), COS(pi()); :: cos( pi()/6) cos( pi()/3) cos( pi()) ============================================================================== 8.660254037844387e-01 5.000000000000001e-01 -1.000000000000000e+00 COT === .. function:: COT ( x ) **COT** 함수는 ì¸ìž *x* ì˜ ì½”íƒ„ì 트(cotangent) ê°’ì„ ë°˜í™˜í•œë‹¤. 즉, 탄ì 트가 *x* ì¸ ê°’ì„ ë¼ë””안 단위로 반환하며, 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT COT(1), COT(-1), COT(0); :: cot(1) cot(-1) cot(0) ========================================================================== 6.420926159343306e-01 -6.420926159343306e-01 NULL CRC32 ===== .. function:: CRC32 ( string ) **CRC32** 함수는 32비트 ì •ìˆ˜ë¡œ 순환 중복 검사 ê°’ì„ ë°˜í™˜í•œë‹¤. NULLì„ ìž…ë ¥í•˜ë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param string: 문ìžì—´ ê°’ì„ ë°˜í™˜í•˜ëŠ” í‘œí˜„ì‹ :rtype: INTEGER .. code-block:: sql SELECT CRC32('cubrid'); :: crc32('cubrid') ================== 908740081 DEGREES ======= .. function:: DEGREES ( x ) **DEGREES** 함수는 ë¼ë””안 단위로 ì§€ì •ëœ ì¸ìž *x* 를 ê°ë„로 환산하여 반환한다. 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT DEGREES(pi()/6), DEGREES(pi()/3), DEGREES (pi()); :: degrees( pi()/6) degrees( pi()/3) degrees( pi()) ============================================================================== 3.000000000000000e+01 5.999999999999999e+01 1.800000000000000e+02 DRANDOM, DRAND ============== .. function:: DRANDOM ( [seed] ) .. function:: DRAND ( [seed] ) **DRANDOM** / **DRAND** 함수는 구간 0.0 ì´ìƒ 1.0 ë¯¸ë§Œì˜ êµ¬ê°„ì—서 ìž„ì˜ì˜ ì´ì¤‘ ì •ë°€ë„(double-precision) ë¶€ë™ ì†Œìˆ˜ì ê°’ì„ ë°˜í™˜í•˜ë©°, *seed* ì¸ìžë¥¼ ì§€ì •í• ìˆ˜ 있다. *seed* ì¸ìžì˜ íƒ€ìž…ì€ **INTEGER** ì´ë©°, 실수가 ì§€ì •ë˜ë©´ ë°˜ì˜¬ë¦¼í•˜ê³ , **INTEGER** 범위를 초과하면 ì—러를 반환한다. *seed* ê°’ì´ ì£¼ì–´ì§€ì§€ ì•Šì€ ê²½ìš° **DRAND()**\는 ì—°ì‚°ì„ ì¶œë ¥í•˜ëŠ” í–‰(row)ì˜ ê°œìˆ˜ì™€ ê´€ê³„ì—†ì´ í•œ 문장 ë‚´ì—서 1회만 ì—°ì‚°ì„ ìˆ˜í–‰í•˜ì—¬ ì˜¤ì§ í•œ ê°œì˜ ìž„ì˜ê°’ë§Œ ìƒì„±í•˜ëŠ” 반면, **DRANDOM()**\는 함수가 호출ë 때마다 매번 ì—°ì‚°ì„ ìˆ˜í–‰í•˜ë¯€ë¡œ 한 문장 ë‚´ì—서 여러 ê°œì˜ ë‹¤ë¥¸ ìž„ì˜ ê°’ì„ ìƒì„±í•œë‹¤. ë”°ë¼ì„œ, 무작위 순서로 í–‰ì„ ì¶œë ¥í•˜ê¸° 위해서는 **ORDER BY** ì ˆì— **DRANDOM()**\ì„ ì´ìš©í•´ì•¼ 한다. 무작위 ì •ìˆ˜ê°’ì„ êµ¬í•˜ê¸° 위해서는 :func:`RANDOM`\ 를 사용한다. :param seed: seed ê°’ :rtype: DOUBLE .. code-block:: sql SELECT DRAND(), DRAND(1), DRAND(1.4); :: drand() drand(1) drand(1.4) ============================================================================== 2.849646518006921e-001 4.163034446537495e-002 4.163034446537495e-002 .. code-block:: sql CREATE TABLE rand_tbl ( id INT, name VARCHAR(255) ); INSERT INTO rand_tbl VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f'), (7, 'g'), (8, 'h'), (9, 'i'), (10, 'j'); SELECT * FROM rand_tbl; :: id name =================================== 1 'a' 2 'b' 3 'c' 4 'd' 5 'e' 6 'f' 7 'g' 8 'h' 9 'i' 10 'j' .. code-block:: sql --drandom() returns random values on every row SELECT DRAND(), DRANDOM() FROM rand_tbl; :: drand() drandom() ============================================================================== 7.638782921842098e-001 1.018707846308786e-001 7.638782921842098e-001 3.191320535905026e-001 7.638782921842098e-001 3.461714529862361e-001 7.638782921842098e-001 6.791894283883175e-001 7.638782921842098e-001 4.533829767754143e-001 7.638782921842098e-001 1.714224677266762e-001 7.638782921842098e-001 1.698049867244484e-001 7.638782921842098e-001 4.507583849604786e-002 7.638782921842098e-001 5.279091769157994e-001 7.638782921842098e-001 7.021088290047914e-001 .. code-block:: sql --selecting rows in random order SELECT * FROM rand_tbl ORDER BY DRANDOM(); :: id name =================================== 6 'f' 2 'b' 7 'g' 8 'h' 1 'a' 4 'd' 10 'j' 9 'i' 5 'e' 3 'c' EXP === .. function:: EXP( x ) **EXP** 함수는 ìžì—°ë¡œê·¸ì˜ ë°‘ìˆ˜ì¸ e를 *x* ì œê³±í•œ ê°’ì„ **DOUBLE** 타입으로 반환한다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT EXP(1), EXP(0); :: exp(1) exp(0) ==================================================== 2.718281828459045e+000 1.000000000000000e+000 .. code-block:: sql SELECT EXP(-1), EXP(2.00); :: exp(-1) exp(2.00) ==================================================== 3.678794411714423e-001 7.389056098930650e+000 FLOOR ===== .. function:: FLOOR( number_operand ) **FLOOR** 함수는 ì¸ìžë³´ë‹¤ 작거나 ê°™ì€ ìµœëŒ€ ì •ìˆ˜ ê°’ì„ ë°˜í™˜í•˜ë©°, 리턴 ê°’ì˜ íƒ€ìž…ì€ ì¸ìžì˜ 타입과 같다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param number_operand: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: number_operandì˜ íƒ€ìž… .. code-block:: sql --it returns the largest integer less than or equal to the arguments SELECT FLOOR(34567.34567), FLOOR(-34567.34567); :: floor(34567.34567) floor(-34567.34567) ============================================ 34567.00000 -34568.00000 .. code-block:: sql SELECT FLOOR(34567), FLOOR(-34567); :: floor(34567) floor(-34567) ============================= 34567 -34567 HEX === .. function:: HEX(n) **HEX** 함수는 문ìžì—´ì„ ì¸ìžë¡œ ì§€ì •í•˜ë©´ 해당 문ìžì—´ì— 대한 16진수 문ìžì—´ì„ ë°˜í™˜í•˜ê³ , 숫ìžë¥¼ ì¸ìžë¡œ ì§€ì •í•˜ë©´ 해당 숫ìžì— 대한 16진수 문ìžì—´ì„ 반환한다. 숫ìžë¥¼ ì¸ìžë¡œ ì§€ì •í•˜ë©´ CONV(num, 10, 16)ê³¼ ê°™ì€ ê°’ì„ ë°˜í™˜í•œë‹¤. :param n: 문ìžì—´ ë˜ëŠ” ìˆ«ìž :rtype: STRING .. code-block:: sql SELECT HEX('ab'), HEX(128), CONV(HEX(128), 16, 10); :: hex('ab') hex(128) conv(hex(128), 16, 10) ================================================================== '6162' '80' '128' LN == .. function:: LN ( x ) **LN** 함수는 진수 *x* ì˜ ìžì—° 로그(밑수가 eì¸ ë¡œê·¸) ê°’ì„ ë°˜í™˜í•˜ë©°, 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 진수 *x* ê°€ 0ì´ê±°ë‚˜ ìŒìˆ˜ì¸ 경우, ì—러를 반환한다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 양수 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT ln(1), ln(2.72); :: ln(1) ln(2.72) ===================================================== 0.000000000000000e+00 1.000631880307906e+00 LOG2 ==== .. function:: LOG2 ( x ) **LOG2** 함수는 진수가 *x* ì´ê³ , 밑수가 2ì¸ ë¡œê·¸ ê°’ì„ ë°˜í™˜í•˜ë©°, 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 진수 *x* ê°€ 0ì´ê±°ë‚˜ ìŒìˆ˜ì¸ 경우, ì—러를 반환한다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 양수 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT log2(1), log2(8); :: log2(1) log2(8) ====================================================== 0.000000000000000e+00 3.000000000000000e+00 LOG10 ===== .. function:: LOG10 ( x ) **LOG10** 함수는 진수 *x* ì˜ ìƒìš© 로그 ê°’ì„ ë°˜í™˜í•˜ë©°, 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 진수 *x* ê°€ 0ì´ê±°ë‚˜ ìŒìˆ˜ì¸ 경우, ì—러를 반환한다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 양수 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT log10(1), log10(1000); :: log10(1) log10(1000) ==================================================== 0.000000000000000e+00 3.000000000000000e+00 MOD === .. function:: MOD (m, n) **MOD** 함수는 첫 번째 ì¸ìž *m*\ì„ ë‘ ë²ˆì§¸ ì¸ìž *n*\으로 나눈 나머지 ê°’ì„ ë°˜í™˜í•˜ë©°, 만약 *n*\ì´ 0ì´ê±°ë‚˜ *m*\보다 í° ê²½ìš° , 나누기 ì—°ì‚°ì„ ìˆ˜í–‰í•˜ì§€ ì•Šê³ *m* ê°’ì„ ê·¸ëŒ€ë¡œ 반환한다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. 주ì˜í• ì ì€ í”¼ì œìˆ˜, 즉 **MOD** í•¨ìˆ˜ì˜ ì¸ìž *m*\ì´ ìŒìˆ˜ì¸ 경우, ì „í˜•ì ì¸ ì—°ì‚°(classical modulus) ë°©ì‹ê³¼ 다르게 ë™ìž‘한다는 ì ì´ë‹¤. ì•„ëž˜ì˜ í‘œë¥¼ ì°¸ê³ í•œë‹¤. **MOD í•¨ìˆ˜ì˜ ê²°ê³¼** +-------+-------+---------------+-----------------------+ | m | n | MOD(m, n) | Classical Modulus | | | | | m-n*FLOOR(m/n) | +=======+=======+===============+=======================+ | 11 | 4 | 3 | 3 | +-------+-------+---------------+-----------------------+ | 11 | -4 | 3 | -1 | +-------+-------+---------------+-----------------------+ | -11 | 4 | -3 | 1 | +-------+-------+---------------+-----------------------+ | -11 | -4 | -3 | -3 | +-------+-------+---------------+-----------------------+ | 11 | 0 | 11 | 0으로 나누기 ì—러 | +-------+-------+---------------+-----------------------+ :param m: í”¼ì œìˆ˜ë¥¼ 나타내며, 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ì—°ì‚°ì‹ì´ë‹¤. :param n: ì œìˆ˜ë¥¼ 나타내며, 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ì—°ì‚°ì‹ì´ë‹¤. :rtype: m/n ì—°ì‚° ê²°ê³¼ì˜ íƒ€ìž… .. code-block:: sql --it returns the reminder of m divided by n SELECT MOD(11, 4), MOD(11, -4), MOD(-11, 4), MOD(-11, -4), MOD(11,0); :: mod(11, 4) mod(11, -4) mod(-11, 4) mod(-11, -4) mod(11, 0) ===================================================================== 3 3 -3 -3 11 .. code-block:: sql SELECT MOD(11.0, 4), MOD(11.000, 4), MOD(11, 4.0), MOD(11, 4.000); :: mod(11.0, 4) mod(11.000, 4) mod(11, 4.0) mod(11, 4.000) ========================================================================= 3.0 3.000 3.0 3.000 PI == .. function:: PI () **PI** 함수는 Ï€ ê°’ì„ ë°˜í™˜í•˜ë©°, 리턴 ê°’ì€ DOUBLE 타입ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT PI(), PI()/2; :: pi() pi()/2 ==================================================== 3.141592653589793e+00 1.570796326794897e+00 POW, POWER ========== .. function:: POW( x, y ) .. function:: POWER( x, y ) **POW** 함수와 **POWER** 함수는 ë™ì¼í•˜ë©°, ì§€ì •ëœ ë°‘ìˆ˜ *x* 를 지수 *y* ë§Œí¼ ê±°ë“ì œê³±í•œ ê°’ì„ ë°˜í™˜í•œë‹¤. 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 밑수를 나타내며, 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ì—°ì‚°ì‹ì´ë‹¤. :param y: 지수를 나타내며, 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ì—°ì‚°ì‹ì´ë‹¤. 밑수가 ìŒìˆ˜ì¸ 경우, 지수는 반드시 ì •ìˆ˜ê°€ ì§€ì •ë˜ì–´ì•¼ 한다. :rtype: DOUBLE .. code-block:: sql SELECT POWER(2, 5), POWER(-2, 5), POWER(0, 0), POWER(1,0); :: power(2, 5) power(-2, 5) power(0, 0) power(1, 0) ==================================================================================================== 3.200000000000000e+01 -3.200000000000000e+01 1.000000000000000e+00 1.000000000000000e+00 .. code-block:: sql --it returns an error when the negative base is powered by a non-int exponent SELECT POWER(-2, -5.1), POWER(-2, -5.1); :: ERROR: Argument of power() is out of range. RADIANS ======= .. function:: RADIANS ( x ) **RADIANS** 함수는 ê°ë„ 단위로 ì§€ì •ëœ ì¸ìž *x* 를 ë¼ë””안 단위로 환산하여 리턴한다. 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT RADIANS(90), RADIANS(180), RADIANS(360); :: radians(90) radians(180) radians(360) ============================================================================== 1.570796326794897e+00 3.141592653589793e+00 6.283185307179586e+00 RANDOM, RAND ============ .. function:: RANDOM ( [seed] ) .. function:: RAND ( [seed] ) **RANDOM** / **RAND** 함수는 0 ì´ìƒ 2 31 미만 구간ì—서 ìž„ì˜ì˜ ì •ìˆ˜ ê°’ì„ ë°˜í™˜í•˜ë©°, *seed* ì¸ìžë¥¼ ì§€ì •í• ìˆ˜ 있다. *seed* ì¸ìžì˜ íƒ€ìž…ì€ **INTEGER** ì´ë©°, 실수가 ì§€ì •ë˜ë©´ ë°˜ì˜¬ë¦¼í•˜ê³ **INTEGER** 범위를 초과하면 ì—러를 반환한다. *seed* ê°’ì´ ì£¼ì–´ì§€ì§€ ì•Šì€ ê²½ìš° **RAND()**\는 ì—°ì‚°ì„ ì¶œë ¥í•˜ëŠ” í–‰(row)ì˜ ê°œìˆ˜ì™€ ê´€ê³„ì—†ì´ í•œ 문장 ë‚´ì—서 1회만 ì—°ì‚°ì„ ìˆ˜í–‰í•˜ì—¬ ì˜¤ì§ í•œ ê°œì˜ ìž„ì˜ê°’ë§Œ ìƒì„±í•˜ëŠ” 반면, **RANDOM()**\ì€ í•¨ìˆ˜ê°€ 호출ë 때마다 매번 ì—°ì‚°ì„ ìˆ˜í–‰í•˜ë¯€ë¡œ 한 문장 ë‚´ì—서 여러 ê°œì˜ ë‹¤ë¥¸ ìž„ì˜ ê°’ì„ ìƒì„±í•œë‹¤. ë”°ë¼ì„œ, 무작위 순서로 í–‰ì„ ì¶œë ¥í•˜ê¸° 위해서는 **RANDOM()**\ì„ ì´ìš©í•´ì•¼ 한다. 무작위 실수 ê°’ì„ êµ¬í•˜ê¸° 위해서는 :func:`DRANDOM` 를 사용한다. :param seed: :rtype: INT .. code-block:: sql SELECT RAND(), RAND(1), RAND(1.4); :: rand() rand(1) rand(1.4) ======================================= 1526981144 89400484 89400484 .. code-block:: sql --creating a new table SELECT * FROM rand_tbl; :: id name =================================== 1 'a' 2 'b' 3 'c' 4 'd' 5 'e' 6 'f' 7 'g' 8 'h' 9 'i' 10 'j' .. code-block:: sql --random() returns random values on every row SELECT RAND(),RANDOM() FROM rand_tbl; :: rand() random() ============================ 2078876566 1753698891 2078876566 1508854032 2078876566 625052132 2078876566 279624236 2078876566 1449981446 2078876566 1360529082 2078876566 1563510619 2078876566 1598680194 2078876566 1160177096 2078876566 2075234419 .. code-block:: sql --selecting rows in random order SELECT * FROM rand_tbl ORDER BY RANDOM(); :: id name =================================== 6 'f' 1 'a' 5 'e' 4 'd' 2 'b' 7 'g' 10 'j' 9 'i' 3 'c' 8 'h' ROUND ===== .. function:: ROUND( number_operand, integer ) **ROUND** 함수는 ì§€ì •ëœ ì¸ìž *number_operand* 를 소수ì 아래 *integer* ìžë¦¬ê¹Œì§€ 반올림한 ê°’ì„ ë°˜í™˜í•œë‹¤. ë°˜ì˜¬ë¦¼í• ìžë¦¿ìˆ˜ë¥¼ ì§€ì •í•˜ëŠ” *integer* ì¸ìžê°€ ìƒëžµë˜ê±°ë‚˜ 0ì¸ ê²½ìš°ì—는 소수ì 아래 첫째 ìžë¦¬ì—서 반올림한다. ê·¸ë¦¬ê³ *integer* ì¸ìžê°€ ìŒìˆ˜ì´ë©´, 소수ì 위 ìžë¦¬, 즉 ì •ìˆ˜ë¶€ì—서 반올림한다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param number_operand: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :param integer: 반올림 ì²˜ë¦¬í• ìœ„ì¹˜ë¥¼ ì§€ì •í•œë‹¤. ì–‘ì˜ ì •ìˆ˜ *n* ì´ ì§€ì •ë˜ë©´ 소수ì 아래 *n* ìžë¦¬ê¹Œì§€ 표현ë˜ê³ , ìŒì˜ ì •ìˆ˜ *n* ì´ ì§€ì •ë˜ë©´ 소수ì 위 *n* ìžë¦¬ì—서 반올림한다. :rtype: number_operandì˜ íƒ€ìž… .. code-block:: sql --it rounds a number to one decimal point when the second argument is omitted SELECT ROUND(34567.34567), ROUND(-34567.34567); :: round(34567.34567, 0) round(-34567.34567, 0) ============================================ 34567.00000 -34567.00000 .. code-block:: sql --it rounds a number to three decimal point SELECT ROUND(34567.34567, 3), ROUND(-34567.34567, 3) FROM db_root; :: round(34567.34567, 3) round(-34567.34567, 3) ============================================ 34567.34600 -34567.34600 .. code-block:: sql --it rounds a number three digit to the left of the decimal point SELECT ROUND(34567.34567, -3), ROUND(-34567.34567, -3); :: round(34567.34567, -3) round(-34567.34567, -3) ============================================ 35000.00000 -35000.00000 SIGN ==== .. function:: SIGN (number_operand) **SIGN** 함수는 ì§€ì •ëœ ì¸ìž ê°’ì˜ ë¶€í˜¸ë¥¼ 반환한다. 양수ì´ë©´ 1ì„, ìŒìˆ˜ì´ë©´ -1ì„, 0ì´ë©´ 0ì„ ë°˜í™˜í•œë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param number_operand: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: INT .. code-block:: sql --it returns the sign of the argument SELECT SIGN(12.3), SIGN(-12.3), SIGN(0); :: sign(12.3) sign(-12.3) sign(0) ======================================== 1 -1 0 SIN === .. function:: SIN ( x ) **SIN** 함수는 ì¸ìžì˜ 사ì¸(sine) ê°’ì„ ë°˜í™˜í•˜ë©°, ì¸ìž *x* 는 ë¼ë””안 ê°’ì´ì–´ì•¼ 한다. 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT SIN(pi()/6), SIN(pi()/3), SIN(pi()); :: sin( pi()/6) sin( pi()/3) sin( pi()) ============================================================================== 4.999999999999999e-01 8.660254037844386e-01 1.224646799147353e-16 SQRT ==== .. function:: SQRT ( x ) **SQRT** 함수는 *x* ì˜ ì œê³±ê·¼(square root) ê°’ì„ **DOUBLE** 타입으로 반환한다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. 만약, ìŒìˆ˜ì´ë©´ ì—러를 반환한다. :rtype: DOUBLE .. code-block:: sql SELECT SQRT(4), SQRT(16.0); :: sqrt(4) sqrt(16.0) ==================================================== 2.000000000000000e+00 4.000000000000000e+00 TAN === .. function:: TAN ( x ) **TAN** 함수는 ì¸ìžì˜ 탄ì 트(tangent) ê°’ì„ ë°˜í™˜í•˜ë©°, ì¸ìž *x* 는 ë¼ë””안 ê°’ì´ì–´ì•¼ 한다. 리턴 ê°’ì€ **DOUBLE** 타입ì´ë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :rtype: DOUBLE .. code-block:: sql SELECT TAN(pi()/6), TAN(pi()/3), TAN(pi()/4); :: tan( pi()/6) tan( pi()/3) tan( pi()/4) ============================================================================== 5.773502691896257e-01 1.732050807568877e+00 9.999999999999999e-01 TRUNC, TRUNCATE =============== .. function:: TRUNC ( x[, dec] ) .. function:: TRUNCATE ( x, dec ) **TRUNC** 함수와 **TRUNCATE** 함수는 ì§€ì •ëœ ì¸ìž *x* ì˜ ì†Œìˆ˜ì 아래 숫ìžê°€ *dec* ìžë¦¬ê¹Œì§€ 표현ë˜ë„ë¡ ë²„ë¦¼(truncation)한 ê°’ì„ ë°˜í™˜í•œë‹¤. 단, **TRUNC** í•¨ìˆ˜ì˜ *dec* ì¸ìžëŠ” ìƒëžµí• 수 있지만, **TRUNCATE** í•¨ìˆ˜ì˜ *dec* ì¸ìžëŠ” ìƒëžµí• 수 없다. ë²„ë¦¼í• ìœ„ì¹˜ë¥¼ ì§€ì •í•˜ëŠ” *dec* ì¸ìžê°€ ìŒìˆ˜ì´ë©´ ì •ìˆ˜ë¶€ì˜ ì†Œìˆ˜ì 위 *dec* 번째 ìžë¦¬ê¹Œì§€ 0으로 표시한다. 리턴 ê°’ì˜ í‘œí˜„ ìžë¦¿ìˆ˜ëŠ” ì¸ìž *x* 를 따른다. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. :param x: 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì´ë‹¤. :param dec: ë²„ë¦¼í• ìœ„ì¹˜ë¥¼ ì§€ì •í•œë‹¤. ì–‘ì˜ ì •ìˆ˜ *n* ì´ ì§€ì •ë˜ë©´ 소수ì 아래 *n* ìžë¦¬ê¹Œì§€ 표현ë˜ê³ , ìŒì˜ ì •ìˆ˜ *n* ì´ ì§€ì •ë˜ë©´ 소수ì 위 *n* ìžë¦¬ê¹Œì§€ 0으로 표시한다. *dec* ì¸ìžê°€ 0ì´ê±°ë‚˜ ìƒëžµë˜ë©´ 소수부를 버림한다. 단, **TRUNCATE** 함수ì—서는 *dec* ì¸ìžë¥¼ ìƒëžµí• 수 없다. :rtype: xì˜ íƒ€ìž… .. code-block:: sql --it returns a number truncated to 0 places SELECT TRUNC(34567.34567), TRUNCATE(34567.34567, 0); :: trunc(34567.34567, 0) trunc(34567.34567, 0) ============================================ 34567.00000 34567.00000 .. code-block:: sql --it returns a number truncated to three decimal places SELECT TRUNC(34567.34567, 3), TRUNC(-34567.34567, 3); :: trunc(34567.34567, 3) trunc(-34567.34567, 3) ============================================ 34567.34500 -34567.34500 .. code-block:: sql --it returns a number truncated to three digits left of the decimal point SELECT TRUNC(34567.34567, -3), TRUNC(-34567.34567, -3); :: trunc(34567.34567, -3) trunc(-34567.34567, -3) ============================================ 34000.00000 -34000.00000 WIDTH_BUCKET ============ .. function:: WIDTH_BUCKET(expression, from, to, num_buckets) **WIDTH_BUCKET** 함수는 순차ì ì¸ ë°ì´í„° ì§‘í•©ì„ ê· ë“±í•œ 범위로 ë¶€ì—¬ëœ ì¼ë ¨ì˜ 버킷으로 나누며, ê° í–‰ì— ì 당한 버킷 번호를 1부터 í• ë‹¹í•œë‹¤. 즉, WIDTH_BUCKET 함수는 equi-width histogramì„ ìƒì„±í•œë‹¤. 반환ë˜ëŠ” ê°’ì€ ì •ìˆ˜ì´ë‹¤. 숫ìžë¡œ 변환ë˜ì§€ 않는 문ìžì—´ì„ ìž…ë ¥í• ë•Œ **cubrid.conf**\ ì˜ **return_null_on_function_errors** 파ë¼ë¯¸í„°ì˜ ê°’ì´ no(기본값)ë©´ ì—러, yesë©´ NULLì„ ë°˜í™˜í•œë‹¤. ì´ í•¨ìˆ˜ëŠ” 주어진 버킷 개수로 범위를 ê· ë“±í•˜ê²Œ 나누어 버킷 번호를 부여한다. 즉, 버킷마다 ê° ë²”ìœ„ì˜ ë„“ì´ëŠ” ê· ë“±í•˜ë‹¤. ì°¸ê³ ë¡œ :func:`NTILE` ë¶„ì„ í•¨ìˆ˜ëŠ” ì´ì— 비해 주어진 버킷 개수로 ì „ì²´ í–‰ì˜ ê°œìˆ˜ë¥¼ ê· ë“±í•˜ê²Œ 나누어 버킷 번호를 부여한다. 즉, 버킷마다 ê° í–‰ì˜ ê°œìˆ˜ëŠ” ê· ë“±í•˜ë‹¤. :param expression: 버킷 번호를 부여받기 위한 ìž…ë ¥ ê°’. 수치 ê°’ì„ ë°˜í™˜í•˜ëŠ” ìž„ì˜ì˜ ì—°ì‚°ì‹ì„ ì§€ì •í•œë‹¤. :param from: *expression*\ ì´ ì·¨í• ìˆ˜ 있는 ë²”ìœ„ì˜ ì‹œìž‘ê°’ìœ¼ë¡œ, ì´ ê°’ì€ ì „ì²´ 범위 ì•ˆì— í¬í•¨ëœë‹¤. :param to: *expression*\ ì´ ì·¨í• ìˆ˜ 있는 ë²”ìœ„ì˜ ë§ˆì§€ë§‰ 값으로, ì´ ê°’ì€ ì „ì²´ 범위 ì•ˆì— í¬í•¨ë˜ì§€ 않는다. :param num_buckets: ë²„í‚·ì˜ ê°œìˆ˜. 추가로 범위 ë°–ì˜ ë‚´ìš©ì„ ë‹´ê¸° 위한 0번 버킷과 (*num_buckets* + 1)번 ë²„í‚·ì´ ìƒì„±ëœë‹¤. :rtype: INT *expression*\ ì€ ë²„í‚· 번호를 부여받기 위한 ìž…ë ¥ ë°ì´í„°ì´ë‹¤. *from*\ ê³¼ *to* 값으로 숫ìží˜• 타입과 ë‚ ì§œ/시간 íƒ€ìž…ì˜ ê°’ ë˜ëŠ” ë‚ ì§œ/시간 타입으로 변환 가능한 문ìžì—´ì´ ìž…ë ¥ë 수 있다. ì „ì²´ 범위ì—서 *from*\ ì€ ë²”ìœ„ì— í¬í•¨ë˜ì§€ë§Œ *to*\ 는 범위 ë°–ì— ì¡´ìž¬í•œë‹¤. 예를 들어 WIDTH_BUCKET (score, 80, 50, 3)ì´ ë°˜í™˜í•˜ëŠ” ê°’ì€ scoreê°€ * 80보다 í¬ë©´ 0, * [80, 70)ì´ë©´ 1, * [70, 60)ì´ë©´ 2, * [60, 50)ì´ë©´ 3, * 50보다 작거나 같으면 4ê°€ ëœë‹¤. ë‹¤ìŒ ì˜ˆì œëŠ” 80ì 보다 작거나 ê°™ê³ 50ì 보다 í° ë²”ìœ„ë¥¼ 1부터 3까지 ê· ë“±í•œ ì 수 범위로 나누어 ë“±ê¸‰ì„ ë¶€ì—¬í•œë‹¤. 해당 범위를 벗어나는 경우 80ì 보다 í¬ë©´ 0, 50ì ì´ê±°ë‚˜ 50ì 보다 작으면 4ë“±ê¸‰ì„ ë¶€ì—¬í•œë‹¤. .. code-block:: sql CREATE TABLE t_score (name VARCHAR(10), score INT); INSERT INTO t_score VALUES ('Amie', 60), ('Jane', 80), ('Lora', 60), ('James', 75), ('Peter', 70), ('Tom', 50), ('Ralph', 99), ('David', 55); SELECT name, score, WIDTH_BUCKET (score, 80, 50, 3) grade FROM t_score ORDER BY grade ASC, score DESC; :: name score grade ================================================ 'Ralph' 99 0 'Jane' 80 1 'James' 75 1 'Peter' 70 2 'Amie' 60 3 'Lora' 60 3 'David' 55 3 'Tom' 50 4 다ìŒì˜ 예ì—서 **WIDTH_BUCKET** 함수는 birthdateì˜ ì§€ì • 범위를 ê· ë“±í•˜ê²Œ ë‚˜ëˆ„ê³ ì´ë¥¼ 기준으로 버킷 번호를 부여한다. 8 ëª…ì˜ ê³ ê°ì„ ìƒë…„ì›”ì¼ì„ 기준으로 '1950-01-01'부터 '1999-12-31'ê¹Œì§€ì˜ ë²”ìœ„ë¥¼ 5개로 ê· ë“± ë¶„í• í•˜ë©°, birthdate ê°’ì´ ë²”ìœ„ë¥¼ 벗어나면 0 ë˜ëŠ” 버킷 개수 + 1ì¸ 6ì„ ë°˜í™˜í•œë‹¤. .. code-block:: sql CREATE TABLE t_customer (name VARCHAR(10), birthdate DATE); INSERT INTO t_customer VALUES ('Amie', date'1978-03-18'), ('Jane', date'1983-05-12'), ('Lora', date'1987-03-26'), ('James', date'1948-12-28'), ('Peter', date'1988-10-25'), ('Tom', date'1980-07-28'), ('Ralph', date'1995-03-17'), ('David', date'1986-07-28'); SELECT name, birthdate, WIDTH_BUCKET (birthdate, date'1950-01-01', date'2000-1-1', 5) age_group FROM t_customer ORDER BY birthdate; :: name birthdate age_group =============================================== 'James' 12/28/1948 0 'Amie' 03/18/1978 4 'Tom' 07/28/1980 4 'Jane' 05/12/1983 5 'David' 07/28/1986 5 'Lora' 03/26/1987 5 'Peter' 10/25/1988 5 'Ralph' 03/17/1995 6