MySQL標準偏差

在本教學中,您將學習如何使用MySQL標準偏差函數來計算填充標準偏差和樣本標準偏差。

標準差介紹

標準差是衡量數據集中值的分佈情況,標準偏差顯示平均值(平均值)存在多少變化。

低標準偏差表明數據集中的值接近於平均值。 而高標準偏差表示數據集的值在大範圍的值上分散。

標準偏差是方差的平方根,可以通過以下步驟計算:

  • 步驟1 - 計算數據集中所有值的平均值以獲得平均值或平均值,例如,假設數據集由1,23組成,平均值為(1 + 2 + 3)/ 3 = 2

  • 步驟2 - 計算值與每個值的平均值的差,並且對每個值的每個的結果進行平方,也就是:

  • 步驟3 - 計算步驟2中產生方差的平均值。然後取方差的平方根以獲得數據集中所有值的標準偏差,例如((1 + 0 + 1)/ 3)的平方根 = 0.816497

總體標準差與樣本標準偏差

如果數據集中的所有值都被納入計算,則該標準偏差稱為總體標準偏差。 然而,如果將一個子集的值或一個樣本作為計算,則該標準偏差稱為樣本標準偏差。

西格瑪字母(σ)表示標準偏差。以下等式說明如何計算總體標準偏差和樣本標準差:

總體標準偏差:

樣品標準偏差:

總體標準差和樣本標準差的計算略有不同。當計算樣本標準偏差的方差時,除以N-1而不是N,其中N是數據集中的值的數量。

MySQL標準偏差函數

MySQL可以方便您計算總體標準偏差和樣本標準偏差。

要計算總體標準偏差,請使用以下功能之一:

  • STD(expression) - 返回運算式的總體標準偏差。如果沒有匹配的行,則STD函數返回NULL
  • STDDEV(expression) – 相當於STD函數,僅提供與Oracle資料庫相容。
  • STDEV_POP(expression) - 相當於STD函數。

要計算樣本標準差,請使用STDDEV_SAMP(expression)函數。

MySQL還為總體偏差和樣本方差計算提供了一些函數:

  • VAR_POP(expression) – 計算運算式的總體標準差。
  • VARIANCE(expression) – 相當於VAR_POP函數。
  • VAR_SAMP(expression) – 計算運算式的樣本標準差。

MySQL標準偏差函數的例子

我們來看看示例資料庫(zaixiandb)中的orders表,其表結構如下所示 -

mysql> desc orders;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| orderNumber    | int(11)     | NO   | PRI | NULL    |       |
| orderDate      | date        | NO   |     | NULL    |       |
| requiredDate   | date        | NO   |     | NULL    |       |
| shippedDate    | date        | YES  |     | NULL    |       |
| status         | varchar(15) | NO   |     | NULL    |       |
| comments       | text        | YES  |     | NULL    |       |
| customerNumber | int(11)     | NO   | MUL | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
7 rows in set

總體標準偏差函數的例子

首先,以下查詢從orders表中返回客戶編號及其訂單數:

SELECT customerNumber,
       COUNT(*) orderCount
FROM orders
WHERE status = 'Shipped'
GROUP BY customerNumber;

執行上面查詢語句,得到以下結果 -

+----------------+------------+
| customerNumber | orderCount |
+----------------+------------+
|            103 |          3 |
|            112 |          3 |
|            114 |          5 |
|            119 |          3 |
|            121 |          4 |
|            124 |         16 |
***** 此處省略了一大波數據 *****
|            489 |          2 |
|            495 |          2 |
|            496 |          3 |
+----------------+------------+
98 rows in set

第二步,以下陳述計算客戶訂單數量的總體標準差:

SELECT FORMAT(STD(orderCount),2)
FROM (SELECT customerNumber, count(*) orderCount
FROM orders
GROUP BY customerNumber) t;

執行上面查詢語句,得到以下結果 -

+---------------------------+
| FORMAT(STD(orderCount),2) |
+---------------------------+
| 2.84                      |
+---------------------------+
1 row in set

請注意,FORMAT函數用於格式化STD函數的結果。

樣本標準偏差函數的示例

假設您只想在orders表中僅僅想要計算那些已發貨的訂單。

首先,以下查詢返回客戶編號及其發貨訂單編號:

SELECT customerNumber, count(*) orderCount
FROM orders
WHERE status = 'Shipped'
GROUP BY customerNumber;

第二,以下查詢使用STDDEV_SAMP函數計算樣本標準偏差:

SELECT FORMAT(STDDEV_SAMP(orderCount),2)
FROM (SELECT customerNumber, count(*) orderCount
FROM orders
WHERE status = 'Shipped'
GROUP BY customerNumber) t;

執行上面查詢語句,得到以下結果 -

+-----------------------------------+
| FORMAT(STDDEV_SAMP(orderCount),2) |
+-----------------------------------+
| 2.48                              |
+-----------------------------------+
1 row in set

在本教學中,我們向您介紹了標準偏差。 然後,向您展示了如何使用MySQL標準偏差函數來計算運算式的總體標準偏差和樣本標準偏差。


上一篇: MySQL函數 下一篇: MySQL+Node.js連接和操作