5.sql2008分组与嵌套
1.Group by基本介紹;
2.Having的使用;
3.分組綜合應(yīng)用;
4.子查詢基本介紹;
5.In/Exists/Any/Some/All;
6.子查詢綜合應(yīng)用;
1.Group by基本介紹:依據(jù)BY提供的規(guī)則,將數(shù)據(jù)集劃分為若干個(gè)小區(qū)域,然后對(duì)小區(qū)域進(jìn)行處理.
?? ?--認(rèn)清實(shí)質(zhì):按照指定字段將相同的分為一組,成為一個(gè)集合,這樣就會(huì)有多個(gè)小集合.然后按照指定字段(不指定就為*)用聚合函數(shù)統(tǒng)計(jì).
A.客戶男女各多少人:
select csex as '性別',COUNT(*) as '人數(shù)'
--一旦分組只能寫分組字段和聚合函數(shù),中間不能再寫其他字段.
from customer
group by 性別
?? ?
B. 統(tǒng)計(jì)出每一類商品中的最高的價(jià)格;
?? ?select 商品ID ,max(商品價(jià)格) as '最高價(jià)格'
?? ?from 商品表
?? ?group by 商品ID
C.查詢出出售數(shù)量最多的商品的貨號(hào);
?? ?select 商品ID,count(*)
?? ?from 明細(xì)表
?? ?group by 商品ID
?? ?order by count(*) desc
?? ?這只銷售最多的排序.應(yīng)該再嵌套一次:
?? ?select 商品ID,count(*)
?? ?from 明細(xì)表
?? ?group by 商品ID
?? ?having count(*)=
?? ?(
?? ??? ?select tip 1 count(*)
?? ??? ?from 明細(xì)表
?? ??? ?group by 商品ID
?? ??? ?order by count(*) desc
?? ?)
group by all
?? ?示例:統(tǒng)計(jì)出2016年客戶購(gòu)物情況:
?? ?select cno ,count(*) as '購(gòu)物數(shù)量'
?? ?from 明細(xì)表
?? ?where 購(gòu)物日期 between '2016-1-1' and '2016-12-31'
?? ?group by cno
?? ?order by count(*)? //排序
?? ?如果加上all會(huì)把在此時(shí)間段未購(gòu)物的也統(tǒng)計(jì)出來(lái).
?? ?示例:統(tǒng)計(jì)出購(gòu)物數(shù)量多于兩件的客戶姓名及數(shù)量,按照數(shù)量降序排列.
?? ?分析:需要使用客戶表和購(gòu)物明細(xì)表兩個(gè)表,利用分組將客戶號(hào)和數(shù)量大于2的找到,然后再將兩個(gè)表關(guān)聯(lián)查詢后得出結(jié)果.(對(duì)分組后的數(shù)據(jù)進(jìn)行篩選加條件必須使用having子句.)
?? ?select cname,t2.購(gòu)物量字段
?? ?from? customer t1,?? ?
?? ?(
?? ??? ?select cno,count(*)
?? ??? ?from 明細(xì)表
?? ??? ?group by cno
?? ??? ?having count(*)>2
?? ?) t2
?? ?where t1.cno=t2.cno
?? ?order by t2.購(gòu)物量字段 desc
!!!做分組查詢時(shí),select語(yǔ)句后面只能是分組的字段名或者聚合函數(shù).
嵌套查詢:
?? ?可以嵌套在select中,也可以嵌套在from中,還可以嵌套在where中.
?? ?示例1.統(tǒng)計(jì)出哪些客戶購(gòu)買了多少件商品.(select,from)
?? ?
?? ?示例2.查詢出售最多的商品名字.(where)
轉(zhuǎn)載于:https://www.cnblogs.com/yangwenlong/p/7905749.html
總結(jié)
以上是生活随笔為你收集整理的5.sql2008分组与嵌套的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 通过构造函数来创建新对象
- 下一篇: 查看dll 的是32位还是64位