当前位置:   article > 正文

mysql stddev_mysql常用的聚合函數 | 學步園

mysql stddev

GROUP BY(聚合)函數

本章論述了用於一組數值操作的 group (集合)函數。除非另作說明, group 函數會忽略 NULL 值。

假如你在一個不包含 ROUP BY子句的語句中使用一個 group函數 ,它相當於對所有行進行分組。

AVG([DISTINCT] expr)

返回expr 的平均值。 DISTINCT 選項可用於返回 expr的不同值的平均值。

若找不到匹配的行,則AVG()返回 NULL 。

mysql> SELECT student_name, AVG(test_score)

->        FROM student

->        GROUP BY student_name;

BIT_AND(expr) www.111cn.cn

返回expr中所有比特的 bitwise AND 。計算執行的精確度為64比特(BIGINT) 。

若找不到匹配的行,則這個函數返回 18446744073709551615 。(這是無符號 BIGINT 值,所有比特被設置為 1)。

BIT_OR(expr)

返回expr 中所有比特的bitwise OR。計算執行的精確度為64比特(BIGINT) 。

若找不到匹配的行,則函數返回 0 。

BIT_XOR(expr)

返回expr 中所有比特的bitwise XOR。計算執行的精確度為64比特(BIGINT) 。

若找不到匹配的行,則函數返回 0 。

COUNT(expr)

返回SELECT語句檢索到的行中非NULL值的數目。

若找不到匹配的行,則COUNT() 返回 0 。

mysql> SELECT student.student_name,COUNT(*)

->        FROM student,course

->        WHERE student.student_id=course.student_id

->        GROUP BY student_name;

COUNT(*) 的稍微不同之處在於,它返回檢索行的數目, 不論其是否包含 NULL值。

SELECT 從一個表中檢索,而不檢索其它的列,並且沒有 WHERE子句時, COUNT(*)被優化到最快的返回速度。例如:

mysql> SELECT COUNT(*) FROM student;

這個優化僅適用於 MyISAM表, 原因是這些表類型會儲存一個函數返回記錄的精確數量,而且非常容易訪問。對於事務型的存儲引擎(InnoDB, BDB), 存儲一個精確行數的問題比較多,原因是可能會發生多重事物處理, 而每個都可能會對行數產生影響。

COUNT(DISTINCT expr,[expr...])

返回不同的非NULL值數目。

若找不到匹配的項,則COUNT(DISTINCT)返回 0 。

mysql> SELECT COUNT(DISTINCT results) FROM student;

在MySQL中, 你通過給定一個表達式列表而獲取不包含NULL 不同表達式組合的數目。在標準 SQL中,你將必須在COUNT(DISTINCT ...)中連接所有表達式。

GROUP_CONCAT(expr)

這個方法不錯 可以將 分組的字符串 以,連接起來

該函數返回帶有來自一個組的連接的非NULL值的字符串結果。其完整的語法如下所示:

GROUP_CONCAT([DISTINCT] expr [,expr ...]

[ORDER BY {unsigned_integer | col_name | expr}

[ASC | DESC] [,col_name ...]]

[SEPARATOR str_val])

mysql> SELECT student_name,

->     GROUP_CONCAT(test_score)

->     FROM student

->     GROUP BY student_name;

Or:

mysql> SELECT student_name,

->     GROUP_CONCAT(DISTINCT test_score

->               ORDER BY test_score DESC SEPARATOR ' ')

->     FROM student

->     GROUP BY student_name;

在MySQL中,你可以獲取表達式組合的連接值。你可以使用DISTINCT刪去重複值。假若你希望多結果值進行排序,則應該使用  ORDER BY子句。若要按相反順序排列,將 DESC (遞減) 關鍵詞添加到你要用ORDER BY 子句進行排序的列名稱中。默認順序為升序;可使用ASC將其明確指定。   SEPARATOR 後面跟隨應該被插入結果的值中間的字符串值。默認為逗號 (‘,’)。通過指定SEPARATOR '' ,你可以刪除所有分隔符。

使用group_concat_max_len系統變量,你可以設置允許的最大長度。  程序中進行這項操作的語法如下,其中 val 是一個無符號整數:

SET [SESSION | GLOBAL] group_concat_max_len = val;

若已經設置了最大長度, 則結果被截至這個最大長度。

MIN([DISTINCT] expr), MAX([DISTINCT] expr)

返回expr 的最小值和最大值。 MIN() 和 MAX() 的取值可以是一個字符串參數;在這些情況下, 它們返回最小或最大字符串值。請參見7.4.5節,“MySQL如何使用索引”。  DISTINCT關鍵詞可以被用來查找expr 的不同值的最小或最大值,然而,這產生的結果與省略DISTINCT 的結果相同。

若找不到匹配的行,MIN()和MAX()返回 NULL 。

mysql> SELECT student_name, MIN(test_score), MAX(test_score)

->        FROM student

->        GROUP BY student_name;

對於MIN()、 MAX()和其它集合函數, MySQL當前按照它們的字符串值而非字符串在集合中的相關位置比較 ENUM和 SET 列。這同ORDER BY比較二者的方式有所不同。這一點應該在MySQL的未來版本中得到改善。

STD(expr) STDDEV(expr)

返回expr 的總體標準偏差。這是標準 SQL 的延伸。這個函數的STDDEV() 形式用來提供和Oracle 的兼容性。可使用標準SQL函數 STDDEV_POP() 進行代替。

若找不到匹配的行,則這些函數返回 NULL 。

STDDEV_POP(expr)

返回expr 的總體標準偏差(VAR_POP()的平方根)。你也可以使用  STD() 或STDDEV(), 它們具有相同的意義,然而不是標準的 SQL。

若找不到匹配的行,則STDDEV_POP()返回 NULL。

STDDEV_SAMP(expr)

返回expr 的樣本標準差 ( VAR_SAMP()的平方根)。

若找不到匹配的行,則STDDEV_SAMP() 返回 NULL 。

SUM([DISTINCT] expr)

返回expr 的總數。 若返回集合中無任何行,則 SUM() 返回NULL。DISTINCT 關鍵詞可用於 MySQL 5.1 中,求得expr 不同值的總和。

若找不到匹配的行,則SUM()返回 NULL。

VAR_POP(expr)

返回expr 總體標準方差。它將行視為總體,而不是一個樣本, 所以它將行數作為分母。你也可以使用 VARIANCE(),它具有相同的意義然而不是 標準的 SQL。

若找不到匹配的項,則VAR_POP()返回NULL。

VAR_SAMP(expr)

返回expr 的樣本方差。更確切的說,分母的數字是行數減去1。

若找不到匹配的行,則VAR_SAMP()返回NULL。

VARIANCE(expr)

返回expr 的總體標準方差。這是標準SQL 的延伸。可使用標準SQL 函數 VAR_POP() 進行代替。

若找不到匹配的項,則VARIANCE()返回NULL。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/933332
推荐阅读
相关标签
  

闽ICP备14008679号