1. 程式人生 > >資料應用達人之SQL基礎教程分享10-SQL函式

資料應用達人之SQL基礎教程分享10-SQL函式

SQL的函式很有用

2.函式

1、SQL的函式

【知識點介紹】

與大多數的計算機語言一樣,SQL裡也有函式(functions),它的函式一般是對資料執行的,為資料的轉換和處理提供很強大、簡介的作用。
它的使用在語法上可以表達為:

Sql程式碼 
  1. SELECT 函式(列) FROM 表;  

2、函式型別

【知識點介紹】

在SQL中,函式往往被分為兩個型別:
1.Aggregate 函式,也被稱為彙總函式或聚集函式,它的函式操作面向列的資料,並返回單一的值;
2.Scalar 函式,它的函式面向單一的值,返回基於該值操作後的單一的值。
這兩種型別的具體內容,我們會在接下來的課程中一一介紹。



彙總資料的函式

3.Aggregate函式

1、什麼是聚集函式

【知識點介紹】

聚集函式是對某些列的行資料進行計算,並返回一個值,常見的函式有:

函式 描述
AVG( ) 返回某列的平均值
COUNT( ) 返回某列的行數
MAX( ) 返回某列的最大值
MIN( ) 返回某列的最小值
SUM( ) 統計某列值的和

2、avg-求平均值

【知識點介紹】

AVG函式用來返回某列的平均值,它通過對列值之和求得該列的平均值。

【例項】

求植物專業學生的學分評價值。
返回的值是學分的平均值,條件是物理學學生。

Sql程式碼 
  1. SELECT AVG(Credit) FROM student  
  2. WHERE Major = 'Botany';  

3、count-計數

【知識點介紹】

COUNT函式是計數函式,用來統計表中某列有多少行。
我們使用COUNT(*)會對錶中行的所有數目進行計數,無論行資料是否為空。而使用COUNT(列)可以對某列進行行數統計,同樣無視資料是否為空。

【例項】

檢視學生表現在有多少個學生的資料。
(思考下學生表中什麼值是不允許為空的)
ID 和SName在當初設計的時候是不允許空值的列。

Sql程式碼 
  1. SELECT COUNT(ID) FROM student;  

4、max min-最大最小值

【知識點介紹】

MAX和MIN是返回列中的最大值和最小值,它們要求我們指定列名。

【例項】

查詢學生表中最低或最高學分。

Sql程式碼 
  1. SELECT MIN(Credit) FROM student;  

5、sum-總計

【知識點介紹】

SUM是用來返回列值的和(區分計數),適用於數字型別的資料,字串的和總是返回0。

【例項】

統計女學生的學分。
使用SUM函式,條件子句是滿足性別是女性。

Sql程式碼 
  1. SELECT sum(Credit) FROM student  
  2. WHERE Sex = 'Female';  

6、關於HAVING

【知識點介紹】

聚集函式有個很大的問題,即它在WHERE語句中是無法使用的,比如我們要返回學生表中分數最低的學資訊,我們不假思索會這樣寫:

Sql程式碼 
  1. SELECT * FROM student  
  2. WHERE Credit = MAX(Credit);  -- 不被SQL支援  

然後,這樣在SQL中是不被支援的!
為了讓聚集函式能在WHERE中被使用,SQL裡增加了一個HAVING子句來替代WHERE的作用:

Sql程式碼 
  1. SELECT 某列, 聚集函式(某列) FROM 表  
  2. WHERE[子句]  
  3. GROUP BY 某列  
  4. HAVING 聚集函式(某列)[子句]  
  5. ORDER BY 某列;  

注意語句中WHERE、GROUP BY、HAVING、ORDER BY的優先順序。

【例項】

使用HAVING子句,統計各個專業的學分綜合。
選擇Major列和SUM(Credit)函式即可;
保險起見,SUM的結果大於0即可。

Sql程式碼 
  1. SELECT Major,SUM(Credit) FROM student  
  2. GROUP BY Major  
  3. HAVING SUM(Credit) > 0;  

下文待續。。。。。。

歡迎大家前往訪問我們的官網:

http://www.datanew.com/datanew/homepage

http://www.lechuangzhe.com/homepage