楓中暢游

          關注技術,熱愛生活
          隨筆 - 15, 文章 - 0, 評論 - 3, 引用 - 0
          數據加載中……

          SQL 21 天自學通學習筆記 3

          1. STARTING WITH 子句 相當于like (**%);

           

          2. order by 子句

           

          3. group by 子句

           

          4. having 子句

           

          SQL> select team,avg(sickleave),avg(annualleave) from orgchart 

            2  group by team

            3  having avg(sickleave)>25 and avg(annualleave)<20;

           

          TEAM            AVG(SICKLEAVE) AVG(ANNUALLEAVE)

          --------------- -------------- ----------------

          RESEARCH                    27             14.5

          MARKETING       28.33333333333 15.3333333333333

           

          SQL> select * from orgchart;

           

          NAME            TEAM                  SALARY SICKLEAVE ANNUALLEAVE

          --------------- --------------- ------------ --------- -----------

          ADAMS           RESEARCH            34000.00        34          12

          WILKES          MARKETING           31000.00        40           9

          STOKES          MARKETING           36000.00        20          19

          MEZA            COLLECTIONS         40000.00        30          27

          MERRICK         RESEARCH            45000.00        20          17

          RICHARDSON      MARKETING           42000.00        25          18

          FURY            COLLECTIONS         35000.00        22          14

          PRECOURT        PR                  37500.00        24          24

           

          8 rows selected

           

           

          SQL> select team,avg(sickleave),avg(annualleave) from orgchart

            2  group by team having count (team)>1;

           

          TEAM            AVG(SICKLEAVE) AVG(ANNUALLEAVE)

          --------------- -------------- ----------------

          COLLECTIONS                 26             20.5

          RESEARCH                    27             14.5

          MARKETING       28.33333333333 15.3333333333333

           

           

          SQL> select team,avg(salary)from orgchart

            2  group by team having team in ('PR','RESEARCH');

           

          TEAM            AVG(SALARY)

          --------------- -----------

          PR                    37500

          RESEARCH              39500

           

           

           

           

          5. 兩者結合使用:

           

           

          SQL> select * from orgchart order by name desc;

           

          NAME            TEAM                  SALARY SICKLEAVE ANNUALLEAVE

          --------------- --------------- ------------ --------- -----------

          WILKES          MARKETING           31000.00        40           9

          STOKES          MARKETING           36000.00        20          19

          RICHARDSON      MARKETING           42000.00        25          18

          PRECOURT        PR                  37500.00        24          24

          MEZA            COLLECTIONS         40000.00        30          27

          MERRICK         RESEARCH            45000.00        20          17

          FURY            COLLECTIONS         35000.00        22          14

          ADAMS           RESEARCH            34000.00        34          12

           

          8 rows selected

           

          SQL> select payee,sum(amount)total,count(payee)number_written from checks 

            2  group by payee having sum(amount) > 50;

           

          PAYEE                                     TOTAL NUMBER_WRITTEN

          ------------------------------------ ---------- --------------

          Ma Bell                                  350.32              2

          Reading R.R.                             245.34              1

          Local Utilities                              98              1

          Joes Stale$ Dent                            150              1

           

          SQL> select payee,sum(amount) total,count(payee)number_written 

            2  from checks where amount >= 100 group by payee

            3  having sum(amount) > 50;

           

          PAYEE                                     TOTAL NUMBER_WRITTEN

          ------------------------------------ ---------- --------------

          Ma Bell                                  350.32              2

          Reading R.R.                             245.34              1

          Joes Stale$ Dent                            150              1

           

           

           where 子句與order by子句常在對單行進行處理時用到;

           group by 和 having子句常用在對數據進行匯總操作上。

          posted on 2012-06-17 22:47 javalinjx 閱讀(298) 評論(0)  編輯  收藏 所屬分類: pl / sql 、database

          主站蜘蛛池模板: 乐至县| 屯留县| 图片| 九龙县| 丽江市| 甘洛县| 潼关县| 邵阳县| 香港| 新巴尔虎左旗| 大厂| 昌黎县| 吴江市| 资兴市| 武胜县| 靖远县| 荆门市| 孝昌县| 云梦县| 上杭县| 东海县| 酒泉市| 华池县| 万宁市| 平昌县| 靖宇县| 汕头市| 大庆市| 富平县| 乾安县| 林州市| 漾濞| 枣阳市| 桐城市| 阿图什市| 舒兰市| 桃园市| 静安区| 康马县| 万盛区| 从江县|