国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL語句練習實例之二——找出銷售冠軍

2024-08-31 00:58:07
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:


--銷售冠軍
--問題:在公司中,老板走進來,要一張每個地區銷量前3名的銷售額與銷售員的報表
---
create table salesdetail
(
Area int not null,
Saler nvarchar(20) not null,
SalerId int not null,
Sales money not null
)
insert salesdetail
select 1,'張三',15,3000
union select 1,'趙一',16,3500
union select 1,'錢二',17,4000
union select 1,'孫三',18,5000
union select 1,'李四',19,5000
union select 1,'王五',11,7000
union select 2,'周邊一',25,3000
union select 2,'李白',22,4000
union select 2,'張鎮東',23,6000
union select 2,'李寧',24,1000
union select 3,'李斯',35,3000
union select 3,'李勇',33,2000
union select 4,'李逵',44,5000
union select 4,'宋江',45,5000
union select 4,'吳用',42,13000
union select 4,'公孫勝',43,23000
union select 5,'阮小二',51,5000
union select 5,'阮小五',52,5000
union select 5,'林沖',53,5000
union select 5,'林莽',54,6000
go
---以下這種寫法SQL語句會主動把最小的那一個銷售額的所有行,都自動刪除,只能得到比最小銷售額大的數據
--如果你的最小銷售額有3行,最大的只有一行,如地區5所示,只會得到最大的那一行。
--地區4只能得到二行,原因同上。
select * from salesdetail as a
where sales >= (select min(b.sales)
from salesdetail as b where a.Area=b.Area and a.Sales<=b.Sales
--group by sales
having COUNT(distinct b.Saler)<=3)
order by a.Area,a.Sales desc,a.Saler,a.SalerId
go
---使用rank()為每個分區中的每一行分配一個順序號,如果有重復值,它們都將分配相同的順序號。
select a.area,a.saler,seq from
(
select area,saler,RANK() over(PARTITION by area order by sales desc) as seq from salesdetail
)a where seq<=3
drop table salesdetail

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵定县| 鲁山县| 双鸭山市| 峨眉山市| 夹江县| 新巴尔虎右旗| 枝江市| 乌鲁木齐市| 怀远县| 麻阳| 平原县| 龙山县| 崇仁县| 子洲县| 石景山区| 保靖县| 五大连池市| 曲周县| 齐河县| 太谷县| 宝兴县| 咸宁市| 土默特右旗| 万源市| 施甸县| 庆城县| 南皮县| 襄汾县| 新乡县| 晴隆县| 偏关县| 包头市| 玉屏| 陇西县| 上虞市| 竹北市| 和林格尔县| 乳山市| 胶南市| 金湖县| 延庆县|