亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

sql中的 where 、group by 和 having 用法解析

2024-08-31 01:04:52
字體:
來源:轉載
供稿:網友

廢話不多說了,直接給大家貼代碼了,具體代碼如下所示:

--sql中的 where 、group by 和 having 用法解析--如果要用到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--將會出現錯誤--選擇列表中的列 '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等。這些函數和其它函數的根本區別就是它們一般作用在多條記錄上。having是分組(group by)后的篩選條件,分組后的數據組內再篩選where則是在分組前篩選where子句中不能使用聚集函數,而having子句中可以,所以在集合函數中加上了HAVING來起到測試查詢結果是否符合條件的作用。即having子句的適用場景是可以使用聚合函數having 子句限制的是組,而不是行having 子句中的每一個元素也必須出現在select列表中。有些數據庫例外,如oracle當同時含有 where 子句、group by 子句 、having 子句及聚集函數時,執行順序如下:執行where子句查找符合條件的數據;使用group by 子句對數據進行分組;對group by 子句形成的組運行聚集函數計算每一組的值;最后用having 子句去掉不符合條件的組  ex:  顯示每個地區的總人口數和總面積.僅顯示那些面積超過1000000的地區。     SELECT region, SUM(population), SUM(area)    FROM bbc    GROUP BY region    HAVING SUM(area)>1000000    在這里,我們不能用where來篩選超過1000000的地區,因為表中不存在這樣一條記錄。(where子句中不能使用聚集函數)    相反,HAVING子句可以讓我們篩選成組后的各組數據  ex: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)    ..........    查詢每一個班級中年齡大于20,性別為男的人數至少為2個的情況    select COUNT(age) as '>20歲人數',classid from Table1 where sex='男' group by classid having COUNT(age)>2底下這個例子很好    SQL> select * from sc;        SNO PNO    GRADE      ---------- ----- ----------YW       95SX       98YY       90YW      89SX       91YY       92YW      85SX       88YY       96YW      95SX       89YY       88    這個表所描述的是4個學生對應每科學習成績的記錄,其中SNO(學生號)、PNO(課程名)、GRADE(成績)。    1、顯示90分以上學生的課程名和成績    //這是一個簡單的查詢,并沒有使用分組查詢    SQL> select sno,pno,grade from sc where grade>=90;        SNO PNO    GRADE      ---------- ----- ----------YW      95SX       98YY       90SX       91YY       92YY       96YW      95    2、顯示每個學生的成績在90分以上的各有多少門    --進行分組顯示,并且按照where條件之后計數    SQL> select sno,count(*) from sc where grade>=90 group by sno;        SNO  COUNT(*)    -  --------- ----------     3     2     1     1    3、這里我們并沒有使用having語句,接下來如果我們要評選三好學生,條件是至少有兩門課程在90分以上才能有資格,      列出有資格的學生號及90分以上的課程數。    //進行分組顯示,并且按照where條件之后計數,在根據having子句篩選分組    SQL> select sno,count(*) from sc where grade>=90 group by sno having count(*)>=2;        SNO  COUNT(*)    ---------- ----------     3     2    這個結果是我們想要的,它列出了具有評選三好學生資格的學生號,跟上一個例子比較之后,發現這是在分組后進行的子查詢。    4、學校評選先進學生,要求平均成績大于90分的學生都有資格,并且語文課必須在95分以上,請列出有資格的學生    //實際上,這個查詢先把語文大于95分的學生號提取出來,之后求平均值,分組顯示后根據having語句選出平均成績大于90的    SQL> select sno,avg(grade) from sc where SNO IN (SELECT SNO FROM SC WHERE GRADE>=95 AND PNO='YW') group by sno having avg(grade)>=90;        SNO AVG(GRADE)    ---------- ----------  94.3333333  90.6666667    5、查詢比平均成績至少比學號是3的平均成績高的學生學號以及平均分數    //having子句中可進行比較和子查詢    SQL> select sno,avg(grade) from sc         group by sno         having avg(grade) > (select avg(grade) from sc where sno=3);


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线看欧美日韩| 国产精品白嫩初高中害羞小美女| www.亚洲成人| 国产精品jizz在线观看麻豆| 久久精品成人欧美大片| 亚洲男人天堂久| 国产午夜精品久久久| 亚洲在线观看视频网站| 国产成人福利视频| 最新日韩中文字幕| 日韩av大片在线| 欧美性猛交xxxx富婆弯腰| 国产精品高潮呻吟视频| 国产精品大片wwwwww| 亚洲午夜久久久影院| 久久久亚洲福利精品午夜| 中文字幕无线精品亚洲乱码一区| 色爱精品视频一区| 免费97视频在线精品国自产拍| 91地址最新发布| 欧美成人激情视频| 欧美交受高潮1| 亚洲欧美精品在线| 欧美猛男性生活免费| 国产精品久久综合av爱欲tv| 欧美精品久久久久久久免费观看| 欧美日韩激情视频| 亚洲第一福利视频| 日韩乱码在线视频| 7777免费精品视频| 亚洲国产成人精品电影| 精品色蜜蜜精品视频在线观看| 亚洲自拍偷拍区| 欧美日韩国产综合视频在线观看中文| 欧美综合国产精品久久丁香| 国产精品美女主播| 在线看福利67194| 亚洲欧洲自拍偷拍| 久久99热精品这里久久精品| 国产精品高清免费在线观看| 国产欧美日韩丝袜精品一区| 福利精品视频在线| 成人羞羞国产免费| 欧美在线视频一区| 久久国产精品视频| 欧美日韩国产丝袜美女| 亚洲乱码国产乱码精品精天堂| 欧美日韩亚洲激情| 亚洲视频777| 亚洲春色另类小说| 亚洲精品美女在线观看播放| 国产精品扒开腿做爽爽爽视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 中文字幕日韩av综合精品| 亚洲电影免费观看高清完整版在线| 成人信息集中地欧美| 福利一区福利二区微拍刺激| 91久久精品国产91久久性色| 国产视频在线观看一区二区| 日本成人在线视频网址| yellow中文字幕久久| 欧美激情在线有限公司| 欧美日韩免费一区| 免费不卡在线观看av| 91久久中文字幕| 国产日韩欧美另类| 亚洲精品成人免费| 国产欧美精品一区二区| 久久精品91久久香蕉加勒比| 亚洲成人在线网| 国产精品亚洲精品| 亚洲午夜精品久久久久久久久久久久| 欧美成人中文字幕在线| 亚洲一区999| 日本高清视频一区| 欧美日韩一区二区三区在线免费观看| 日产精品久久久一区二区福利| 中文字幕日韩av综合精品| 国产一区二区丝袜| 奇米一区二区三区四区久久| 爱福利视频一区| 欧美激情精品久久久久| 日韩美女福利视频| 欧美激情一区二区三区高清视频| 国产视频精品久久久| 97精品国产97久久久久久| 亚洲理论在线a中文字幕| 在线播放日韩欧美| 91产国在线观看动作片喷水| 欧美中在线观看| 一个人看的www久久| 日韩在线视频中文字幕| 欧美精品videossex性护士| 日韩欧美在线一区| 91国偷自产一区二区三区的观看方式| 在线观看亚洲视频| 中文在线资源观看视频网站免费不卡| 日韩国产欧美精品一区二区三区| 精品亚洲aⅴ在线观看| 久久视频在线观看免费| 国产精品三级久久久久久电影| 亚洲区在线播放| 热99精品只有里视频精品| 欧美电影在线播放| 久久久国产一区| 97香蕉超级碰碰久久免费的优势| 日韩免费看的电影电视剧大全| 亚洲高清久久网| 91最新在线免费观看| 亚洲人成电影网站| 日本高清视频一区| 欧美成人精品xxx| 成人欧美一区二区三区黑人| 欧美夫妻性视频| 亚洲国产精品久久久久秋霞蜜臀| 成人亚洲欧美一区二区三区| 亚洲国产中文字幕在线观看| 国产精品久久久av| 日韩高清人体午夜| 久久天天躁狠狠躁夜夜av| 精品国模在线视频| 性日韩欧美在线视频| 欧美影院成年免费版| 亚洲第一色在线| 青青久久av北条麻妃黑人| 中文字幕亚洲一区二区三区五十路| 一个人看的www欧美| 国产一区二中文字幕在线看| 欧美俄罗斯乱妇| 91精品综合久久久久久五月天| 最近中文字幕mv在线一区二区三区四区| 久久久人成影片一区二区三区| 国内外成人免费激情在线视频网站| 亚洲女人初尝黑人巨大| 欧美黄色成人网| 岛国av午夜精品| 午夜精品福利视频| 亚洲欧洲在线播放| 亚洲欧美激情四射在线日| 精品国产视频在线| 亚洲男人天堂视频| 欧美一级淫片videoshd| 亚洲精品国产欧美| 国产欧美日韩精品丝袜高跟鞋| 亚洲精品资源在线| 韩国一区二区电影| 岛国av一区二区在线在线观看| 欧美成人在线免费| 在线观看欧美日韩国产| 4p变态网欧美系列| 国产成人精品久久二区二区91| 色综久久综合桃花网| 5566成人精品视频免费| 国产精品免费在线免费| 91精品中国老女人| 国语自产精品视频在免费| 精品亚洲永久免费精品| 亚洲国产欧美一区二区三区久久| 伊人久久久久久久久久久久久| 日韩免费av片在线观看| 欧美丝袜一区二区三区| 国产盗摄xxxx视频xxx69| 日韩视频在线免费观看| 日韩亚洲欧美中文高清在线|