黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

group by的使用說(shuō)明

系統(tǒng) 2042 0

?

SQL HAVING 出現(xiàn)的原因

  在 SQL 中增加 HAVING 子句原因是,WHERE 關(guān)鍵字無(wú)法與合計(jì)函數(shù)一起使用。

SQL HAVING 語(yǔ)法

      
        SELECT
      
      
         column_name, aggregate_function(column_name)


      
      
        FROM
      
      
         table_name


      
      
        WHERE
      
      
         column_name operator value


      
      
        GROUP
      
      
        BY
      
      
         column_name


      
      
        HAVING
      
       aggregate_function(column_name) operator value
    

SQL HAVING 實(shí)例

我們擁有下面這個(gè) "Orders" 表:

O_Id OrderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

現(xiàn)在,我們希望查找訂單總金額少于 2000 的客戶(hù)。

我們使用如下 SQL 語(yǔ)句:

      
        SELECT
      
       Customer,
      
        SUM
      
      (OrderPrice) 
      
        FROM
      
      
         Orders


      
      
        GROUP
      
      
        BY
      
      
         Customer


      
      
        HAVING
      
      
        SUM
      
      (OrderPrice)
      
        <
      
      
        2000
      
    

結(jié)果集類(lèi)似:

Customer SUM(OrderPrice)
Carter 1700

現(xiàn)在我們希望查找客戶(hù) "Bush" 或 "Adams" 擁有超過(guò) 1500 的訂單總金額。

我們?cè)?SQL 語(yǔ)句中增加了一個(gè)普通的 WHERE 子句:

      
        SELECT
      
       Customer,
      
        SUM
      
      (OrderPrice) 
      
        FROM
      
      
         Orders


      
      
        WHERE
      
       Customer
      
        =
      
      
        '
      
      
        Bush
      
      
        '
      
      
        OR
      
       Customer
      
        =
      
      
        '
      
      
        Adams
      
      
        '
      
      
        GROUP
      
      
        BY
      
      
         Customer


      
      
        HAVING
      
      
        SUM
      
      (OrderPrice)
      
        >
      
      
        1500
      
    

結(jié)果集:

Customer SUM(OrderPrice)
Bush 2000
Adams 2000

?


  在select 語(yǔ)句中可以使用group by 子句將行劃分成較小的組,然后,使用聚組函數(shù)返回每一個(gè)組的匯總信息,另外,可以使用having子句限制返回的結(jié)果集。group by 子句可以將查詢(xún)結(jié)果分組,并返回行的匯總信息Oracle 按照group by 子句中指定的表達(dá)式的值分組查詢(xún)結(jié)果。

  在帶有g(shù)roup by 子句的查詢(xún)語(yǔ)句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚組函數(shù)

??

      
        select
      
      
        max
      
      (sal),job emp 
      
        group
      
      
        by
      
      
         job;

//(注意max(sal), job 的job并非一定要出現(xiàn),但有意義 )
      
    

  查詢(xún)語(yǔ)句的select 和group by ,having 子句是聚組函數(shù)唯一出現(xiàn)的地方,在where 子句中不能使用聚組函數(shù)。

      
        select
      
       deptno,
      
        sum
      
      (sal) 
      
        from
      
       emp 
      
        where
      
       sal
      
        >
      
      
        1200
      
      
        group
      
      
        by
      
       deptno 
      
        having
      
      
        sum
      
      (sal)
      
        >
      
      
        8500
      
      
        order
      
      
        by
      
       deptno;
    

  當(dāng)在gropu by 子句中使用having 子句時(shí),查詢(xún)結(jié)果中只返回滿(mǎn)足having條件的組。在一個(gè)sql語(yǔ)句中可以有where子句和having子句。having 與where 子句類(lèi)似,均用于設(shè)置限定條件。
?
  where 子句的作用是在對(duì)查詢(xún)結(jié)果進(jìn)行分組前,將不符合where條件的行去掉,即在分組之前過(guò)濾數(shù)據(jù),條件中不能包含聚組函數(shù),使用where條件顯示特定的行。
  having 子句的作用是篩選滿(mǎn)足條件的組,即在分組之后過(guò)濾數(shù)據(jù),條件中經(jīng)常包含聚組函數(shù),使用having 條件顯示特定的組,也可以使用多個(gè)分組標(biāo)準(zhǔn)進(jìn)行分組。

  查詢(xún)每個(gè)部門(mén)的每種職位的雇員數(shù)
?

      
        select
      
       deptno,job,
      
        count
      
      (
      
        *
      
      ) 
      
        from
      
       emp 
      
        group
      
      
        by
      
       deptno,job;
    

?

如果你對(duì)何時(shí)應(yīng)該使用WHERE,何時(shí)使用HAVING仍舊很迷惑,請(qǐng)遵照下面的說(shuō)明: ?

  WHERE語(yǔ)句在GROUP BY語(yǔ)句之前;SQL會(huì)在分組之前計(jì)算WHERE語(yǔ)句。?

  HAVING語(yǔ)句在GROUP BY語(yǔ)句之后;SQL會(huì)在分組之后計(jì)算HAVING語(yǔ)句。

?

PS: 因?yàn)槲矣龅搅诉@個(gè)問(wèn)題,現(xiàn)在已經(jīng)解決了,所以還是記錄哈。

?

group by的使用說(shuō)明


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論