常用的聚合函數(shù)有COUNT()规揪、AVG()迈嘹、SUM()碰酝、MAX()丐黄、MIN()绊序。
COUNT()函數(shù):統(tǒng)計數(shù)據(jù)表中包含的記錄行的總數(shù),或者根據(jù)查詢結(jié)果返回列中包含的數(shù)據(jù)行數(shù)夸盟。
COUNT(*)計算表中總的行數(shù)蛾方,不管某列是否有數(shù)值或者為空值。
COUNT(字段名)計算指定列下總的行數(shù)上陕,計算時將忽略空值的行桩砰。
AVG()函數(shù):通過計算返回的行數(shù)和每一行數(shù)據(jù)的和,求得指定列數(shù)據(jù)的平均值释簿。
SUM()函數(shù):是一個求總和的函數(shù)亚隅,返回指定列值的總和。
MAX()函數(shù):返回指定列中的最大值庶溶,不僅適用于查找數(shù)值類型煮纵,也可應(yīng)用于字符類型。
MIN()函數(shù):返回查詢列中的最小值偏螺,不僅適用于查找數(shù)值類型行疏,也可應(yīng)用于字符類型。
一砖茸、聚合函數(shù)及group by
標準語法
聚合函數(shù)類型:sum(),avg(),max(),min(), count()
-在不使用group by 情況下隘擎,select后跟的全是字段名 或 全是聚合列(如sum(),min()...)殴穴,不能" select 字段名凉夯,sum() "混搭货葬。
-在使用group by 情況下,select后可以跟“字段名劲够,聚合列”震桶,但是其中的字段名必須是group by 中所列的字段名,沒列的字段名也是不能使用的征绎。聚合列里的字段名就可以不是group by 包含的蹲姐。
-sum、avg人柿、max柴墩、min函數(shù)必須指定字段進行聚合運算,無法使用通配符凫岖,同時這些指定字段名的聚合函數(shù)都會忽略空值行江咳。
-count(字段名)計算字段下的總行數(shù),但是計算時將忽略空值的行哥放;count(*)計算表中的總行數(shù)歼指,不管某列是否有數(shù)值或者為空值;因此甥雕,count(*)適合計算表格行數(shù)踩身,count(字段名)計算字段中非空的行數(shù)。
-group by 有數(shù)據(jù)去重功能社露,類似于distinct挟阻。但有區(qū)別,distinct是返回不同的行峭弟,group by 是先對特定的字段中相同的值分為一個區(qū)赁濒,然后再對字段去重分組。
group by 子句有多個字段時孟害,依據(jù)寫的字段順序依次對數(shù)據(jù)分區(qū)拒炎,因此group by 字段1,字段2與group by 字段2挨务,字段1不一樣击你。
依據(jù)洲分組,計算每個洲有多少個國家
###二谎柄、having
只有使用了group by 子句后才能使用having子句丁侄,having子句不能脫離group by 子句單獨使用,因為having子句本質(zhì)上是對group by 分組的篩選朝巫。
having子句中只能使用聚合函數(shù)和group by作為分組篩選的字段鸿摇。
having的表達式和where的表達式基本相同,但是having的表達式中可以使用聚合數(shù)劈猿,where的表達式中不可以,因為where是對原表的行數(shù)據(jù)進行篩選,having是對group by 分組后的數(shù)據(jù)篩選土陪。
對行數(shù)據(jù)篩選用where业汰,對聚合函數(shù)的數(shù)據(jù)篩選用having。
三、SQL運行原理
四、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
to_char //轉(zhuǎn)換日期格式
to_char('字段',"日期類型")
五椎例、條件判斷函數(shù)