sqlite聚合函數


常見聚合函數

avg(X)

用於返回組中所有非空列的平均值。字符串(string)或二進制數據(BLOB)等非數字類型當作0來計算。結果是浮點型的數據,即便所有數據中只有一個整數(integer)的數字。如果所有數據都是null,則此函數返回null

count(X) count(*)

這兩種表達式還是有區別的,count(x)用於計算組內非空(not null)行數,而count(x)用於計算組內所有行的行數。

group_concat(X) group_concat(X,Y)

這個函數用於把組內所有的字符串連接起來,如果沒有參數y,則字符串之間以“,”作為分隔符,否則以y作為分隔符。

max(x)和min(x)

這兩個函數用於取最大值和最小值,如果所有行都是空值(null),則返回null。

sum(X) 和total(X)

這兩個函數都用於返回組內指定列(x)的總值,sum()和total()聚合函數返回組中所有非空值的和。如果沒有非空輸入行,sum()返回NULL,而total()返回0.0。對於無行和來說,NULL通常不是一個有用的結果,但是SQL標准要求使用NULL,而且大多數其他SQL數據庫引擎都以這種方式實現sum(),所以SQLite也以同樣的方式實現NULL,以便兼容。非標准的total()函數提供了一種方便的方法來解決SQL語言中的這個設計問題。

total()的結果總是一個浮點值。如果所有非空輸入都是整數,sum()的結果就是一個整數值。如果sum()的任何輸入既不是整數也不是空值,那么sum()將返回一個浮點值,該浮點值可能是真正的和的近似值。

需要注意的是,如果所有非空行都是整數,Sum()在計算時可能會拋出一個“整數溢出”異常,並且在計算期間的任何點都發生了整數溢出(整數和值大於最大整數)。Total()從不拋出整數溢出(因為總是使用浮點數)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM