1. 程式人生 > 其它 >SQL Server基礎SQL指令碼之Group By

SQL Server基礎SQL指令碼之Group By

程式碼大概80行左右 本系列,幾乎都是程式碼,記得當時寫的時候用的是微軟的官方例項資料庫AdventureWorks_Data.mdf、AdventureWorks_Log.ldf來執行的。 下載連結:連結: https://pan.baidu.com/s/1pMdLz6N 密碼: xvhu 或者回復“AdventureWorks”來獲取連結。


不知道隨便想的裡面有沒有跟讀者同名的?

--create table EmpTable

drop table EmpTable

CREATE TABLE EmpTable
(
    EmpName nchar(3),
    Region nvarchar(5),
    Department nvarchar(10),
    Salary money
)

--insert 6 records into the table

insert into EmpTable values
(N'李剛',N'山東',N'資訊科技部',20000),
(N'趙雲',N'廣東',N'資訊科技部',30000),
(N'周宇',N'山東',N'人力資源部',25000),
(N'李想',N'廣東',N'人力資源部',40000),
(N'張濤',N'河北',N'資訊科技部',50000),
(N'樑浩',N'山東',N'資訊科技部',50000)

select * from EmpTable

-- 1).檢視所有員工平均工資
select avg(Salary) as '平均工資' from EmpTable
-- 2).按照地區分組,檢視每個地區的平均工資
select Region,avg(Salary) from EmpTable group by Region
select Region,sum(Salary) from EmpTable group by Region

select Region,avg(Salary) from EmpTable group by Region having avg(Salary)>40000
-- 3).按照部門分組,檢視每個部門的平均工資
select Department,avg(Salary) from EmpTable group by Department
--4).同時按照地區和部門分組,顯示如山東地區人力資源部的平均工資的資訊
select Region,Department,avg(Salary) from EmpTable group by Region,Department
--5).同時按照地區和部門、地區、部門分組
select Region,Department,avg(Salary) from EmpTable
group by
grouping sets
(
 (Region,Department), (Region), (Department)
)
--6).按照部門分組的同時顯示總的平均
select Region,sum(Salary) from EmpTable group by Region
select sum(Salary) from EmpTable

select Region,sum(Salary) from EmpTable group by rollup(Region)
--Region
--不分組

select Region,Department,sum(Salary) from EmpTable group by rollup(Region,Department)
--Region,Department
--Region
--不分組

-- rollup(A,B,C)
-- A,B,C
-- A,B
-- A 
-- 不分組

--7).同時按照地區和部門分組時,同時顯示地區平均,部門平均和總平均
select Region,Department,sum(Salary) from EmpTable group by cube(Region,Department)
--Region+Department
--Region
--Department
--不分組

--cube(A,B,C)
--A
--B
--C
--A,B
--A,C
--B,C
--A,B,C
--不分組
--週末了,加班的繼續加班,休班的好好休息吧!