在本教學中,您將學習如何使用MySQL標準偏差函式來計算填充標準偏差和樣本標準偏差。
標準差是衡量資料集中值的分布情況,標準偏差顯示平均值(平均值)存在多少變化。
低標準偏差表明資料集中的值接近於平均值。 而高標準偏差表示資料集的值在大範圍的值上分散。
標準偏差是方差的平方根,可以通過以下步驟計算:
步驟1 - 計算資料集中所有值的平均值以獲得平均值或平均值,例如,假設資料集由1
,2
和3
組成,平均值為(1 + 2 + 3)/ 3 = 2
。
步驟2 - 計算值與每個值的平均值的差,並且對每個值的每個的結果進行平方,也就是:
步驟3 - 計算步驟2中產生方差的平均值。然後取方差的平方根以獲得資料集中所有值的標準偏差,例如((1 + 0 + 1)/ 3)
的平方根 = 0.816497
。
總體標準差與樣本標準偏差
如果資料集中的所有值都被納入計算,則該標準偏差稱為總體標準偏差。 然而,如果將一個子集的值或一個樣本作為計算,則該標準偏差稱為樣本標準偏差。
西格瑪字母(σ
)表示標準偏差。以下等式說明如何計算總體標準偏差和樣本標準差:
總體標準偏差:
樣品標準偏差:
總體標準差和樣本標準差的計算略有不同。當計算樣本標準偏差的方差時,除以N-1
而不是N
,其中N
是資料集中的值的數量。
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)
– 計算表示式的樣本標準差。我們來看看範例資料庫(yiibaidb)中的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標準偏差函式來計算表示式的總體標準偏差和樣本標準偏差。