9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦 > 學習英語 > 專業英語 > 計算機英語 > 數據庫having的用法

數據庫having的用法

時間: 長思709 分享

數據庫having的用法

  數據庫having的用法的用法你知道嗎?下面小編就跟你們詳細介紹下數據庫having的用法的用法,希望對你們有用。

  數據庫having的用法的用法如下:

  --sql中的group by 用法解析:

  -- Group By語句從英文的字面意義上理解就是“根據(by)一定的規則進行分組(Group)”。

  --它的作用是通過一定的規則將一個數據集劃分成若干個小的區域,然后針對若干個小區域進行數據處理。

  --注意:group by 是先排序后分組;

  --舉例子說明:如果要用到group by 一般用到的就是“每這個字” 例如說明現在有一個這樣的表:每個部門有多少人 就要用到分組的技術

  select DepartmentID as '部門名稱',

  COUNT(*) as '個數' from BasicDepartment group by DepartmentID

  --這個就是使用了group by +字段進行了分組,其中我們就可以理解為我們按照了部門的名稱ID

  --DepartmentID將數據集進行了分組;然后再進行各個組的統計數據分別有多少;

  --如果不用count(*) 而用類似下面的語法

  select DepartmentID,DepartmentName from BasicDepartment group by DepartmentID

  --將會出現錯誤

  --消息 8120,級別 16,狀態 1,第 1 行

  --選擇列表中的列 'BasicDepartment.DepartmentName' 無效,因為該列沒有包含在聚合函數或 GROUP BY 子句中。

  --這就是我們需要注意的一點,如果在返回集字段中,這些字段要么就要包含在Group By語句的后面,

  --作為分組的依據;要么就要被包含在聚合函數中。

  --出現的錯誤詳解:咱們看看group by 的執行的過程,先執行select 的操作返回一個程序集,

  --然后去執行分組的操作,這時候他將根據group by 后面的字段

  --進行分組,并且將相同的字段并稱一列數據,如果group by 后面沒有這個字段的話就要分成好多的數據。

  --但是分組就只能將相同的數據分成兩列數據,而一列中又只能放入一個字段,所以那些沒有進行分組的

  --數據系統不知道將數據放入哪里,所以就出現此錯誤

  --目前一種分組情況只有一條記錄,一個數據格是無法放入多個數值的,

  --所以這里就需要通過一定的處理將這些多值的列轉化成單值,然后將其放在對應的

  --數據格中,那么完成這個步驟的就是聚合函數。這就是為什么這些函數叫聚合函數(aggregate functions)了

  --group by all語法解析:

  --如果使用 ALL 關鍵字,那么查詢結果將包括由 GROUP BY 子句產生的所有組,即使某些組沒有符合搜索條件的行。

  --沒有 ALL 關鍵字,包含 GROUP BY 子句的 SELECT 語句將不顯示沒有符合條件的行的組。

  select DepartmentID,DepartmentName as '部門名稱',

  COUNT(*) as '個數' from BasicDepartment group by all DepartmentID,DepartmentName

  --group by 和having 解釋:前提必須了解sql語言中一種特殊的函數:聚合函數,

  --例如SUM, COUNT, MAX, AVG等。這些函數和其它函數的根本區別就是它們一般作用在多條記錄上。

  --WHERE關鍵字在使用集合函數時不能使用,所以在集合函數中加上了HAVING來起到測試查詢結果是否符合條件的作用。

  create TABLE Table1

  (

  ID int identity(1,1) primary key NOT NULL,

  classid int,

  sex varchar(10),

  age int,

  )

  --添加測試數據

  Insert into Table1 values(1,'男',20)

  Insert into Table1 values(2,'女',22)

  Insert into Table1 values(3,'男',23)

  Insert into Table1 values(4,'男',22)

  Insert into Table1 values(1,'男',24)

  Insert into Table1 values(2,'女',19)

  Insert into Table1 values(4,'男',26)

  Insert into Table1 values(1,'男',24)

  Insert into Table1 values(1,'男',20)

  Insert into Table1 values(2,'女',22)

  Insert into Table1 values(3,'男',23)

  Insert into Table1 values(4,'男',22)

  Insert into Table1 values(1,'男',24)

  Insert into Table1 values(2,'女',19

  --舉例子說明:查詢table表查詢每一個班級中年齡大于20,性別為男的人數

  select COUNT(*)as '>20歲人數',classid from Table1 where sex='男' group by classid,age having age>20

  --需要注意說明:當同時含有where子句、group by 子句 、having子句及聚集函數時,執行順序如下:

  --執行where子句查找符合條件的數據;

  --使用group by 子句對數據進行分組;對group by 子句形成的組運行聚集函數計算每一組的值;最后用having 子句去掉不符合條件的組。

  --having 子句中的每一個元素也必須出現在select列表中。有些數據庫例外,如oracle.

  --having子句和where子句都可以用來設定限制條件以使查詢結果滿足一定的條件限制。

  --having子句限制的是組,而不是行。where子句中不能使用聚集函數,而having子句中可以。

543069 主站蜘蛛池模板: 国模一区二区三区私拍视频| 日本一区二区三本视频在线观看| 高潮迭起av乳颜射后入| 国产精品无遮挡在线观看| 下面一进一出好爽视频| 国产精品综合av一区二区国产馆| 久久久久青草线蕉亚洲| 波多野结衣的av一区二区三区| 亚洲av无码之国产精品网址蜜芽 | 成人亚欧欧美激情在线观看| 给我中国免费播放片在线| 精品一区二区中文字幕| 国产精品久久中文字幕网| 国产综合久久久久久鬼色| 国产97人人超碰CAO蜜芽PROM| 欧乱色国产精品兔费视频| 中文字幕V亚洲日本在线电影| 亚洲精品揄拍自拍首页一| 精品国产成人a在线观看| 色久综合色久综合色久综合| 国产成人亚洲老熟女精品| 欧美三级欧美成人高清| 777奇米四色成人影视色区| 国产精品久久久久aaaa| 国产99在线 | 亚洲| 国产永久免费高清在线| 亚洲无人区视频在线观看| 99精品国产一区二区三区| 国产情侣激情在线对白| 亚洲精品揄拍自拍首页一| 男同精品视频免费观看网站| 99国产欧美另类久久久精品| 久久精品国产99精品亚洲| 久久国产精品精品国产色| 亚洲精品码中文在线观看| 青草成人精品视频在线看| 亚洲欧美日韩综合一区在线 | 亚洲成人av免费一区| 亚洲成av人片无码不卡播放器| 日韩一区二区三区三级| 亚洲高清国产拍精品熟女|