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