1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        利用 SQL 實(shí)現(xiàn)數(shù)據(jù)分組與透視

        共 1564字,需瀏覽 4分鐘

         ·

        2021-06-12 17:24

        數(shù)據(jù)分組是對相同類別的數(shù)據(jù)進(jìn)行匯總,而數(shù)據(jù)透視表是通過對行或列的不同組合對數(shù)據(jù)進(jìn)行匯總,所使用的匯總方法有求和、計(jì)數(shù)、平均值、標(biāo)準(zhǔn)差等,本文使用SQL對數(shù)據(jù)進(jìn)行數(shù)據(jù)分組和數(shù)據(jù)透視,下面一起來學(xué)習(xí)。


        普通分組

        普通的數(shù)據(jù)分組這里使用的GROUP BY函數(shù),同時使用COUNT函數(shù)進(jìn)行計(jì)數(shù)。

        #數(shù)據(jù)分組SELECT Ssex,COUNT(SId) as '人數(shù)' from StudentGROUP BY Ssex;

        分組篩選

        如何對于分組后的結(jié)果進(jìn)行篩選?這里不能使用WHERE函數(shù),應(yīng)該使用HAVING進(jìn)行篩選,只要后面跟篩選條件即可。

        #數(shù)據(jù)分組SELECT Ssex,COUNT(SId) as '人數(shù)' from StudentGROUP BY SsexHAVING COUNT(SId)>5;



        CASE WHEN分組

        CASE WHEN函數(shù)用來對數(shù)據(jù)進(jìn)行判斷和分組,下面的代碼中我們對score列的值進(jìn)行判斷,score大于90為優(yōu)秀,score大于80為良好,score大于70為中等, score大于60為及格,否則不及格,結(jié)果使用成績分組字段進(jìn)行標(biāo)記。
        #score字段分組SELECT *,CASEWHEN score>90 THEN '優(yōu)秀'WHEN score>=80 AND score<90 THEN '良好'WHEN score>=70 AND score<80 THEN '中等'WHEN score>=60 AND score<70 THEN '及格'ELSE '不及格' END AS '成績分組'FROM score;

        單列分組

        數(shù)據(jù)分組可以單列分組,也可以多列分組,對于單列分組,只需要在GROUP BY后面跟一個字段就可以。

        #單列分類匯總SELECT ssex,COUNT(sid) AS id_count FROM studentGROUP BY ssexORDER BY id_count DESC;

        多列分組

        而對多列數(shù)據(jù)分組,可以在GROUP BY后面跟多個字段,下面這條SQL語句同時根據(jù)課程號和學(xué)號進(jìn)行分組,然后以分?jǐn)?shù)和降序排列。

        #多列分類匯總SELECT CId,SId,SUM(score) AS score_sum FROM scoreGROUP BY CId,SIdHAVING score_sum >160ORDER BY score_sum DESC;

        數(shù)據(jù)透視

        在SQL中想要達(dá)到數(shù)據(jù)透視表的功能,需要GROUP BY與CASE WHEN結(jié)合使用,下面這條SQL語句可以計(jì)算不同分?jǐn)?shù)段的人數(shù),現(xiàn)用CASE WHEN對不同的分?jǐn)?shù)段進(jìn)行分類,然后,用GROUP BY分組,并且計(jì)數(shù),實(shí)現(xiàn)數(shù)據(jù)透視功能。

        #score字段分組SELECT CASEWHEN score>90 THEN '優(yōu)秀'WHEN score>=80 AND score<90 THEN '良好'WHEN score>=70 AND score<80 THEN '中等'WHEN score>=60 AND score<70 THEN '及格'ELSE '不及格' END AS score_type,COUNT(sid) as '人數(shù)'FROM scoregroup by score_typeorder by COUNT(sid) DESC;


        點(diǎn)分享
        點(diǎn)收藏
        點(diǎn)點(diǎn)贊
        點(diǎn)在看
        瀏覽 58
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美金妇乱妇熟妇XXXX生 | 亚洲一卡二卡 | japanesegay筋肉失禁 | 国内精品久久久久久久久 | 黄色a一级 | 啊啊啊啊疼轻点 | 久草在在线 | 日韩性爽 | 污污污在线免费观看 | 青青草在线观看免费 |