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子句常用在对数据进行汇总操作上。