카테고리:

집계 함수 (일반) , 윈도우 함수 (일반, 윈도우 프레임)

STDDEV_POP

NULL이 아닌 값의 모집단 표준 편차(분산의 제곱근)를 반환합니다.

표본 표준 편차(분산의 제곱근)를 반환하는 STDDEV 도 참조하십시오.

구문

집계 함수

STDDEV_POP( [ DISTINCT ] <expr1>)
Copy

윈도우 함수

STDDEV_POP( [ DISTINCT ] <expr1> ) OVER (
                                        [ PARTITION BY <expr2> ]
                                        [ ORDER BY <expr3> [ ASC | DESC ] [ <window_frame> ] ]
                                        )
Copy

window_frame 구문에 대한 자세한 내용은 윈도우 프레임 구문과 사용법 을 참조하십시오.

인자

expr1

숫자 값으로 평가되는 식입니다. 이는 표준 편차를 계산하는 식입니다.

expr2

분할하는 선택적 식입니다.

expr3

각 파티션 내에서 순서를 지정하는 선택적 식입니다.

반환

반환된 값의 데이터 타입은 DOUBLE 입니다.

그룹 내 모든 레코드가 NULL인 경우 이 함수가 NULL을 반환합니다.

사용법 노트

  • VARCHAR 식이 전달되면 이 함수는 암시적으로 입력을 부동 소수점 값으로 캐스팅합니다. 캐스팅을 수행할 수 없으면 오류가 반환됩니다.

  • 이 함수가 윈도우 함수로 호출되고 OVER 절에 ORDER BY 절이 포함된 경우:

    • DISTINCT 키워드는 금지되어 있으며 SQL 컴파일 오류가 발생합니다.

    • 윈도우 프레임을 지정해야 합니다. 윈도우 프레임을 지정하지 않으면 암시적인 누적 윈도우 프레임이 사용됩니다.

      RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

    구문 및 예를 비롯하여 윈도우 프레임에 대한 자세한 내용은 윈도우 프레임 구문과 사용법 을 참조하십시오.

    암시적 윈도우 프레임에 대한 자세한 내용은 윈도우 프레임 사용법 노트 를 참조하십시오.

집계 함수 예

다음 예에서는 작은 정수 모집단의 표준 편차를 계산합니다.

CREATE TABLE t1 (c1 INTEGER);
INSERT INTO t1 (c1) VALUES
    (6),
   (10),
   (14)
   ;
SELECT STDDEV_POP(c1) FROM t1;
Copy
+----------------+
| STDDEV_POP(C1) |
|----------------|
|    3.265986375 |
+----------------+

STDDEV 및 STDDEV_SAMP 함수는 STDDEV_POP와 동일한 결과를 반환하지 않습니다.

다음 예에서는 카페에서 판매할 음식 품목을 나열하는 menu 라는 테이블이 있다고 가정합니다. 다음 출력은 Dessert 카테고리에 속한 테이블의 6개 행을 보여줍니다. Main, Beverage 등 다른 카테고리에 대한 다른 행도 존재합니다.

+---------+--------------------+---------------+-------------------+----------------+
| MENU_ID | MENU_ITEM_NAME     | ITEM_CATEGORY | COST_OF_GOODS_USD | SALE_PRICE_USD |
|---------+--------------------+---------------+-------------------+----------------|
|   10002 | Sugar Cone         | Dessert       |            2.5000 |         6.0000 |
|   10003 | Waffle Cone        | Dessert       |            2.5000 |         6.0000 |
|   10004 | Two Scoop Bowl     | Dessert       |            3.0000 |         7.0000 |
|   10008 | Ice Cream Sandwich | Dessert       |            1.0000 |         4.0000 |
|   10009 | Mango Sticky Rice  | Dessert       |            1.2500 |         5.0000 |
|   10010 | Popsicle           | Dessert       |            0.5000 |         3.0000 |
+---------+--------------------+---------------+-------------------+----------------+

매출 원가 및 판매 가격(Dessert 행에만 해당)에 대한 모집단 표준 편차를 찾으려면 다음 쿼리를 실행하십시오.

SELECT item_category, STDDEV_POP(cost_of_goods_usd) stddev_cogs, STDDEV_POP(sale_price_usd) stddev_price
  FROM menu
  WHERE item_category='Dessert'
  GROUP BY 1;
Copy
+---------------+--------------+--------------+
| ITEM_CATEGORY |  STDDEV_COGS | STDDEV_PRICE |
|---------------+--------------+--------------|
| Dessert       | 0.9176131477 |  1.343709625 |
+---------------+--------------+--------------+

윈도우 함수의 예

다음 예에서는 동일한 menu 테이블을 사용하지만 STDDEV_POP 함수를 윈도우 함수로 실행합니다.

윈도우 함수는 item_category 열을 기준으로 행을 분할합니다. 따라서 표준 편차는 각 항목 카테고리에 대해 한 번 계산되고 해당 값은 그룹의 각 행에 대한 결과에서 반복됩니다. 이 예에서 행은 품목 카테고리와 매출 원가를 모두 기준으로 그룹화해야 합니다. (두 행의 상품 가격 값이 동일하므로 6개 Dessert 행은 이제 5개 행으로 그룹화됩니다.)

SELECT item_category, cost_of_goods_usd, STDDEV_POP(cost_of_goods_usd) OVER(PARTITION BY item_category) stddev_cogs
  FROM menu
  GROUP BY 1,2
  ORDER BY item_category;
Copy
+---------------+-------------------+--------------+
| ITEM_CATEGORY | COST_OF_GOODS_USD |  STDDEV_COGS |
|---------------+-------------------+--------------|
| Beverage      |            0.5000 | 0.1027402334 |
| Beverage      |            0.7500 | 0.1027402334 |
| Beverage      |            0.6500 | 0.1027402334 |
| Dessert       |            2.5000 | 0.9433981132 |
| Dessert       |            3.0000 | 0.9433981132 |
| Dessert       |            1.0000 | 0.9433981132 |
| Dessert       |            0.5000 | 0.9433981132 |
| Dessert       |            1.2500 | 0.9433981132 |
| Main          |            4.5000 | 3.352193642  |
| Main          |            8.0000 | 3.352193642  |
| Main          |            2.0000 | 3.352193642  |
| Main          |            3.5000 | 3.352193642  |
...