程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

數據分組

編輯:關於SqlServer

1、選前幾條數據

select top 10 orderid,amt=unitprice*quantity
from ordredetails
order by amt desc
2.利用group by 子句對select命令所選數據分組。分組後可以顯示出來
group by是除了不含匯總函數(sum,avg,count,min,max等以外的列)
select prod_id,sum(qty*unit_price) tot_amt
from sale_item
group by prod_id
order by tot_amt desc
3.group by 子句還可以加 with cube語句,加上with cube語句,其返回的數據除了和沒有with cube語句一樣外,,另外它會得到一些加總列。
select sup_id,prod_id ,sum(qty*unit_price),sum(qty) tot_amt
from sale_item
groupby sup_id,prod_id with cube

將有對應每個sup_id的加總列,每個prod_id 的加總列,和null,null全部的加總列

4.with cube語句換成with rollup ,則只返回最高層次的group列(最靠近group by的列的加總)

上面的例子,只返回sup_id的加總列,每個sup_id後有個加總列

5。使用grouping區分空值

cube操作生成的空值null帶來一個問題,即如何區分cube操作生成的null值和實際數據中返回的null值。這個問題,可以用grouping函數解決。如果列中的值來自事實數據,則grouping函數返回0,如果列中的值是cube操作所生成的null,則返回1。在cube操作中,所生成的null代表全體值。可將select語句寫成使用grouping函數將null替換為字符串all。

因為事實數據中的null表名數據值未知,所以select語句還可以用字符串unknow替代來自事實數據的null。

select productid,grouping(productid),orderid,grouping(orderid),sum(quantity)
from order
group by productid,orderid
with cube
order by productid,orderid
6.group by 子句經常會和having子句搭配,用來找出每個組別中滿足指定條件的數據,以下命令由產品文件中找出代碼重復者,也就是同一型產品有兩家以上的供應商。
select prod_id,count(*) from stock
group by prod_id
having count(*)>1

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved