<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        那些年我們一起做過的[分組查詢]_MySQL

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 20:10:04
        文檔

        那些年我們一起做過的[分組查詢]_MySQL

        那些年我們一起做過的[分組查詢]_MySQL:分組查詢 在SQL Server中使用的分組查詢是ORDER BY子句,使用ORDER BY子句要同聚合函數(shù)配合使用才能完成分組查詢,在SELECT查詢的字段中如果字段沒有使用聚合函數(shù)就必須出現(xiàn)在ORDER BY子句中(即SELECT后邊的字段名要么出現(xiàn)在聚合函數(shù)中,要么在ORDER
        推薦度:
        導(dǎo)讀那些年我們一起做過的[分組查詢]_MySQL:分組查詢 在SQL Server中使用的分組查詢是ORDER BY子句,使用ORDER BY子句要同聚合函數(shù)配合使用才能完成分組查詢,在SELECT查詢的字段中如果字段沒有使用聚合函數(shù)就必須出現(xiàn)在ORDER BY子句中(即SELECT后邊的字段名要么出現(xiàn)在聚合函數(shù)中,要么在ORDER

        分組查詢

        在SQL Server中使用的分組查詢是ORDER BY子句,使用ORDER BY子句要同聚合函數(shù)配合使用才能完成分組查詢,在SELECT查詢的字段中如果字段沒有使用聚合函數(shù)就必須出現(xiàn)在ORDER BY子句中(即SELECT后邊的字段名要么出現(xiàn)在聚合函數(shù)中,要么在ORDER BY子句中使用)

        使用group by進(jìn)行分組查詢

        在使用group by關(guān)鍵字時(shí),在select列表中可以指定的項(xiàng)目是有限制的,select語句中僅許以下幾項(xiàng):

        *被分組的列

        *為每個(gè)分組返回一個(gè)值得表達(dá)式,例如用一個(gè)列名作為參數(shù)的聚合函數(shù)

        注意:group by 有一個(gè)原則,就是 select 后面的所有列中,沒有使用聚合函數(shù)的列,必須出現(xiàn)在 group by 后面

        HAVING子句與WHERE子句的區(qū)別

        HAVING子句和WHERE子句的相似之處在于,它也定義搜索條件。但與WHERE子句不同,HAVING子句與組有關(guān),而不是與單個(gè)的行有關(guān)。

        1、如果指定了GROUP BY子句,那么HAVING子句定義的搜索條件將作用于這個(gè)GROUP BY子句創(chuàng)建的那些組。

        2、如果指定WHERE子句,而沒有指定GROUP BY子句,那么HAVING子句定義的搜索條件將作用于WHERE子句的輸出,并把這個(gè)輸出看作是一個(gè)組。

        3、如果既沒有指定GROUP BY子句也沒有指定WHERE子句,那么HAVING子句定義的搜索條件將作用于FROM子句的輸出,并把這個(gè)輸出看作是一個(gè)組。

        4、在SELECT語句中,WHERE和HAVING子句的執(zhí)行順序不同。上面SELECT語句的執(zhí)行步驟可知,WHERE子句只能接收來自FROM子句的輸入,而HAVING子句則可以接收來自GROUP BY子句、WHERE子句和FROM子句的輸入。

        S-TQL語句執(zhí)行順序

        select 5:投影 ,映射為對(duì)應(yīng)的列

        from 1:定位到表

        where 2:進(jìn)行分組前的第一次篩選

        group by 3:分組

        having 4:對(duì)分組后的數(shù)據(jù)進(jìn)行第二次篩選

        order by 6:對(duì)映射出的結(jié)果進(jìn)行排序

        注意:where后面不能加聚合函數(shù)

        三個(gè)順序:

        01where:對(duì)表中記錄進(jìn)行篩選(分組前)

        02group by 分組依據(jù)

        03having 對(duì)分組后的數(shù)據(jù)進(jìn)行篩選

        見到having,之前必須有g(shù)roup by,因?yàn)閔aving是對(duì)分組后的數(shù)據(jù)進(jìn)行篩選

        三者使用順序不可顛倒

        eg:

        myschool數(shù)據(jù)庫(kù)中有四張表,分別為student(學(xué)生表)result(成績(jī)表)subject(科目表)grade(年級(jí)表)

        01查詢每個(gè)年級(jí)的總學(xué)時(shí)數(shù),并按照升序排列

        題目是每個(gè)年級(jí)的總學(xué)時(shí)數(shù),每個(gè)年級(jí)肯定做為group by的分組依據(jù),總學(xué)時(shí)則利用sum()函數(shù)

        至于order by后也可以跟SUM(classhour).寫總學(xué)時(shí)數(shù)的目的是為了更詳細(xì)的理解語句的執(zhí)行順序

        select gradeid as 年級(jí)編號(hào),SUM(classhour) as 總學(xué)時(shí)數(shù)

        from Subject

        group by GradeId

        order by 總學(xué)時(shí)數(shù)

        02查詢每個(gè)參加考試的學(xué)員的平均分

        每個(gè)參加考試的學(xué)員平均分,學(xué)員對(duì)應(yīng)學(xué)員編號(hào)肯定為group by的分組依據(jù),平均分利用avg()函數(shù)計(jì)算出來

        select studentno as 學(xué)員編號(hào),AVG(studentresult) as 平均分

        from Result

        group by StudentNo

        --03查詢每門課程的平均分,并按照降序排列

        每門課的平均分,按降序排列,group by的分租依據(jù)是subjectid(課程編號(hào))平均分則利用avg()函數(shù)計(jì)算出來

        利用order by 平均分 desc 來進(jìn)行降序排列

        select subjectid as 課程編號(hào) , SUM(studentresult) as 平均分

        from Result

        group by SubjectId

        order by 平均分 desc

        04查詢每個(gè)學(xué)生參加的所有考試的總分,并按照降序排列

        每個(gè)學(xué)生所有考試總分,按降序排列,group by的分組依據(jù)是studentno(學(xué)生編號(hào)),總分利用sum()函數(shù)進(jìn)行計(jì)算

        最后利用order by總分desc來進(jìn)行降序排序

        select studentno as 學(xué)生編號(hào) ,SUM(StudentResult) as 總分

        from Result

        group by StudentNo

        order by 總分 desc

        05查詢每學(xué)期學(xué)時(shí)數(shù)超過50的課程數(shù)

        每學(xué)期學(xué)時(shí)超過50的課程數(shù),group by的分組依據(jù)是gradeid(年級(jí)編號(hào)),現(xiàn)有一個(gè)限定條件學(xué)時(shí)不超過50,這里用where來限定他classhour>50

        select * from Subject

        select gradeid as 年級(jí)編號(hào),COUNT(classhour) as 課程數(shù)

        from Subject

        where classhour>50

        group by GradeId

        06查詢每學(xué)期學(xué)生的平均年齡

        每學(xué)期學(xué)生的平均年齡,group by的分組依據(jù)是studentno(學(xué)生編號(hào)),平均年齡用datediff()進(jìn)行處理得出年齡,用avg()在進(jìn)行處理,得出平均年齡.

        select studentno as 學(xué)生編號(hào),AVG(DATEDIFF(yy,birthday,GETDATE())) as 平均年齡

        from Student

        group by StudentNo

        07查詢北京地區(qū)的每學(xué)期學(xué)生人數(shù)

        北京地區(qū)的每學(xué)期學(xué)生人數(shù).group by的分組依據(jù)是gradeid ,學(xué)生人數(shù)用count(studentno)得出學(xué)生人數(shù),最后有個(gè)限定條件,只查詢北京地區(qū)的,用where進(jìn)行限定,address like '%北京%'%代表任意長(zhǎng)度的字符.

        select gradeid as 年級(jí)編號(hào),COUNT(studentno) as 學(xué)生人數(shù)

        from Student

        where Address like '%北京%'

        group by GradeId

        08查詢參加考試的學(xué)生中平均分及格的學(xué)生記錄,并按照成績(jī)降序排列

        參加考試的學(xué)生中平均分及格的學(xué)生記錄,按降序排列,group by 分組依據(jù)是studentno,平均分用av(studentresult)進(jìn)行計(jì)算出平均分,having進(jìn)行判定avg(studentresult)>60是否及格,在用order by 平均分及格 desc進(jìn)行降序排列.

        select Studentno as 學(xué)生編號(hào),AVG(Studentresult) as 平均分及格

        from Result

        group by StudentNo

        having AVG(Studentresult)>=60

        order by 平均分及格 desc

        09查詢考試日期為2009年9月9號(hào)的課程的及格平均分

        考試日期為2009年9月9號(hào)的課程的及格平均分,group by 的分組依據(jù)是課程編號(hào),限定條件是考試日期為2009年9月9號(hào)

        where ExamDate>='2009-9-9' and ExamDate<'2009-9-10'.最后進(jìn)行過濾及格平均分having avg(studentresult)>=60.

        select subjectid,AVG(studentresult) as 及格平均分

        from Result

        where ExamDate>='2009-9-9' and ExamDate<'2009-9-10'

        group by SubjectId

        having AVG(StudentResult)>=60

        10查詢至少一次考試不及格的學(xué)生學(xué)號(hào),不及格次數(shù)

        考試不及格的學(xué)生學(xué)號(hào),不及格次數(shù),先限定條件不及格的學(xué)生成績(jī),在按照學(xué)生學(xué)號(hào)進(jìn)行分組,group by studentno

        select studentno as 學(xué)生編號(hào),COUNT(1) as 次數(shù)

        from Result

        where StudentResult<60

        group by StudentNo

        學(xué)生數(shù)據(jù)庫(kù)中數(shù)據(jù)的增加、修改和刪除

        目標(biāo):

        1:使用T-SQL向表中插入數(shù)據(jù)

        2:使用T-SQL更新表中數(shù)據(jù)

        3:使用T-SQL刪除表中數(shù)據(jù)

        首先我們來簡(jiǎn)單的介紹一下SQL及它的作用是什么

        在進(jìn)行數(shù)據(jù)庫(kù)管理時(shí),如果每次創(chuàng)建數(shù)據(jù)庫(kù)、表或者從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),都需要手動(dòng)在SQL Server Management Studio中進(jìn)行的話,不但管理不方便,而且存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)也根本無法提供給程序使用。所以,數(shù)據(jù)庫(kù)也需要一套指令集,能夠識(shí)別指令、執(zhí)行相應(yīng)的操作為程序提供數(shù)據(jù),目前表中的指令集及時(shí)SQL語言。

        SQL語言是真的數(shù)據(jù)庫(kù)而言的一門語言,它可以創(chuàng)建數(shù)據(jù)庫(kù)、數(shù)據(jù)表,可以針對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行增、刪、改、查等操作,可以常見視圖、存儲(chǔ)過程,可以賦予用戶權(quán)限等。

        SQL中的運(yùn)算符

        運(yùn)算符是一種符號(hào),是用來進(jìn)行列間或者變量之間的比較和數(shù)學(xué)運(yùn)算的。在SQL中,常用的運(yùn)算符有算數(shù)運(yùn)算符、賦值運(yùn)算符、比較運(yùn)算符和邏輯運(yùn)算符。

        1:算數(shù)運(yùn)算符

        算數(shù)運(yùn)算符包括:+(加),—(減),*(乘),/(除),%(模)五個(gè)。算數(shù)運(yùn)算符用來在兩個(gè)數(shù)或表達(dá)式上執(zhí)行數(shù)學(xué)運(yùn)算,這兩個(gè)表達(dá)式可以是任意兩個(gè)數(shù)字?jǐn)?shù)據(jù)類型的表達(dá)式

        運(yùn)算符 說明

        + 加運(yùn)算,求兩個(gè)數(shù)或表達(dá)式相加的和

        — 減運(yùn)算,求兩個(gè)數(shù)或表達(dá)式相減的差

        * 乘運(yùn)算,求兩個(gè)數(shù)或表達(dá)式相乘的積

        / 除運(yùn)算,求兩個(gè)數(shù)或表達(dá)式相除的商,例如,5/5的值為1,5.7/3的值為1.900000

        % 取模運(yùn)算,求兩個(gè)數(shù)或表達(dá)式相除的余數(shù),例如,5%3的值為2

        2:賦值運(yùn)算符

        SQL有一個(gè)賦值運(yùn)算符,即“=”(等號(hào)),用于將一個(gè)數(shù)或變量或表達(dá)式賦值給另一個(gè)變量

        運(yùn)算符 說明

        = 吧一個(gè)數(shù)或變量或表達(dá)式賦值給另一個(gè)變量,例如:Name=‘張三’

        3:比較運(yùn)算符

        比較運(yùn)算符用來判斷兩個(gè)表達(dá)式的大小關(guān)系,除text、ntext或Image數(shù)據(jù)類型的表達(dá)式外,比較運(yùn)算符幾乎可以用于其他所有的表達(dá)式。

        運(yùn)算符 說明

        = 等于,例如:age=23

        > 大于,例如:price>100

        < 小于

        <> 不等于

        >= 大于等于

        <= 小于等于

        != 不等于(非SQL-92標(biāo)準(zhǔn))

        4:邏輯運(yùn)算符

        邏輯運(yùn)算符用來對(duì)某個(gè)條件進(jìn)行判斷,以獲得判斷條件的真假,返回帶有TRUE或FALSE值的布爾數(shù)據(jù)類型

        運(yùn)算符 說明

        AMD 當(dāng)且僅當(dāng)兩個(gè)布爾表達(dá)式都為TRUE時(shí),返回TRUE

        OR 當(dāng)且僅當(dāng)兩個(gè)布爾表達(dá)式都為FALSE時(shí),返回FALSE

        NOT 對(duì)布爾表達(dá)式的值取反,有限級(jí)別最好

        ——————————————————————————————————————————————————————————————————————

        使用T-SQL插入數(shù)據(jù)

        1.使用INSERT插入數(shù)據(jù)(使用INSERT語句一行一行的插入數(shù)據(jù)是最常用的方法)

        語法如下:

        INSERT [INTO] 表名 [(列名列表)] VALUES(值類表);

        其中

        1.[INTO]是可選的,也可以省略。

        2.表名是必須的。

        3.表的列名是可選的,如果省略,將依次插入所有列。

        4.多個(gè)列名和多個(gè)值列表用逗號(hào)分隔。

        5.分號(hào)(;)是T-SQL語句終止符,分好不是必須的。

        一次插入多行數(shù)據(jù)

        1.通過INSERT SELECT語句向表中添加數(shù)據(jù)

        例如,創(chuàng)建一張新表AddressList來存儲(chǔ)本班的通訊信息,則可以從學(xué)生表中提取相關(guān)的數(shù)據(jù)插入建好的AddressList表中,語句如下:

        INSERT INTO Addresslist(姓名,地址,電子郵件)

        SELECT SName,SAdd熱身賽,SEmail

        FROM Students

        注意:

        查詢的多的數(shù)據(jù)個(gè)數(shù),順序,數(shù)據(jù)類型等,必須與插入的項(xiàng)保持一致。

        AddressList表必須預(yù)先創(chuàng)建好,并且具有姓名,地址和電子郵件三個(gè)列。

        2.通過SELECT INTO語句將現(xiàn)有表中的數(shù)據(jù)添加到新表中

        與上面的INSERT INTO 類似,SELECT INTO語句也是從一個(gè)表中選擇一些數(shù)據(jù)插入新表中,所不同的是,這個(gè)新表是執(zhí)行查詢語句的時(shí)候創(chuàng)建的,不能夠預(yù)先存在。

        例:

        SELECT Students.Name,Students.SAddress,Students.SEMmail

        INTO AddressList

        FROM Students

        將創(chuàng)建新表的AddressList,把Students表中的SName,SAddress,SEmail作為AddressList表的新列,并且把查詢到的數(shù)據(jù)全部插入新表中。

        3.通過UNION關(guān)鍵字合并數(shù)據(jù)進(jìn)行插入

        UNION語句用于將兩個(gè)不同的數(shù)據(jù)或查詢結(jié)果組合成一個(gè)新的結(jié)果集。當(dāng)然,不同的數(shù)據(jù)或查詢結(jié)果,也要求數(shù)據(jù)個(gè)數(shù),順序,數(shù)據(jù)類型都一致,因此,當(dāng)向表中多次插入數(shù)據(jù)的時(shí)候,可以使用SELECT...UNION來簡(jiǎn)化操作

        例:

        INSERT Student(SName,SGrade,SSex)

        SELECT '張三',7,1 UNION

        SELECT '李四',4,0 UNION

        SELECT '王五',2,0 UNION

        SELECT '朱六',3,0 UNION

        SELECT '王二麻子',7,1 UNION

        這樣的效果其實(shí)與上面INSERT...SELECT的效果是一樣的,只不過多行數(shù)據(jù)是后寫的,然后用UNION合并組成多行數(shù)據(jù)記錄,最后把這些多行數(shù)據(jù)記錄一起插入

        ——————————————————————————————————————————————————————————————————————

        使用T-SQL更新數(shù)據(jù)

        語法:

        UPDATE 表名 SET 列名 = 更新值 [WHERE 更新條件]

        其中:

        1.SET后面可以緊隨多個(gè)”列名=更新值“,修改東哥數(shù)據(jù)列的值,不限一個(gè),使用逗號(hào)分隔。

        2.WHERE子句是可選的,用來限制更新數(shù)據(jù)的條件。若不限制,則整個(gè)表的數(shù)據(jù)行將被更新。

        使用T-SQL刪除數(shù)據(jù)

        語法:

        DELETE [FROM] 表名 [WHERE <刪除條件>]

        例:

        在學(xué)生信息表中刪除姓名為”張三“的數(shù)據(jù)

        DELETE FROM Students

        WHERE SName = '張三'

        使用TTRUNCATE TABLE刪除數(shù)據(jù)

        TTRUNCATE TABLE用來刪除表中說有行,功能上它類似于沒有WHERE子句的DELETE語句。

        例如,要?jiǎng)h除學(xué)生信息表中的所有記錄行,可以使用以下語句

        TRNCATE TABLE Students

        但TRUNCATE TABLE 比DELETE 執(zhí)行速度更快,使用的系統(tǒng)資源和事務(wù)日志資源更少,并且刪除數(shù)據(jù)后表的標(biāo)識(shí)列會(huì)重新開始編號(hào)。

        實(shí)際工作中,不建議使用TRUNCATE TABLE 語句,因?yàn)槭褂盟鼊h除的數(shù)據(jù)不能恢復(fù)還原。

        友情提示:刪除前問自己三遍是不是真的要?jiǎng)h除,問下令刪除的人三遍是否要?jiǎng)h除,確定沒有遺漏后執(zhí)行操作。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        那些年我們一起做過的[分組查詢]_MySQL

        那些年我們一起做過的[分組查詢]_MySQL:分組查詢 在SQL Server中使用的分組查詢是ORDER BY子句,使用ORDER BY子句要同聚合函數(shù)配合使用才能完成分組查詢,在SELECT查詢的字段中如果字段沒有使用聚合函數(shù)就必須出現(xiàn)在ORDER BY子句中(即SELECT后邊的字段名要么出現(xiàn)在聚合函數(shù)中,要么在ORDER
        推薦度:
        標(biāo)簽: 查詢 分組 mysql
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲日韩欧洲乱码AV夜夜摸| 亚洲av午夜成人片精品电影| 无码区日韩特区永久免费系列 | 久久久久亚洲AV无码麻豆| 久久精品国产亚洲αv忘忧草 | a在线视频免费观看| 日本一道一区二区免费看| 亚洲成色在线综合网站| 亚洲国产精华液2020| 99精品免费观看| 国产亚洲精品福利在线无卡一| 亚洲欧洲日本在线观看| 精品四虎免费观看国产高清午夜| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 四虎免费永久在线播放| 亚洲国产午夜电影在线入口| 9久热这里只有精品免费| 国产乱人免费视频| av午夜福利一片免费看久久| 日韩精品免费一区二区三区| 校园亚洲春色另类小说合集| 免免费国产AAAAA片| 亚洲国产日韩a在线播放| 亚洲国产成人久久一区久久 | 特级毛片在线大全免费播放| 毛片免费在线视频| 亚洲国产精品线观看不卡| 男人天堂免费视频| 国产成人亚洲综合| 免费精品国产自产拍在线观看| 国产精品另类激情久久久免费 | 亚洲精品mv在线观看| 亚洲午夜免费视频| 亚洲第一AV网站| 亚洲国产精品免费观看| 在线亚洲v日韩v| 国产99视频精品免费视频7| 成人无码a级毛片免费| 精品国产日韩久久亚洲| 亚洲免费人成在线视频观看| 成年在线观看网站免费|