发布网友 发布时间:2022-04-22 23:52
共4个回答
懂视网 时间:2022-04-29 22:14
DepName系名Student(stuID, name, depID) 学生编号,姓名,系编号
Score(stuID, category, score) 学生编码,科目,成绩
找出每一个系的最高分,并且按系编号,学生编号升序排列,要求顺序输出以下信息:
系编号,系名,学生编号,姓名,总分
测试数据:
USE [test] GO /****** Object: Table [dbo].[Score] Script Date: 05/11/2015 23:16:23 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Score]( [stuID] [int] NOT NULL, [category] [varchar](50) NOT NULL, [score] [int] NOT NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (1, N‘英语‘, 80) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (2, N‘数学‘, 80) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (1, N‘数学‘, 70) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (2, N‘英语‘, 89) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (3, N‘英语‘, 81) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (3, N‘数学‘, 71) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (4, N‘数学‘, 91) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (4, N‘英语‘, 61) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (5, N‘英语‘, 91) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (6, N‘英语‘, 89) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (7, N‘英语‘, 77) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (8, N‘英语‘, 97) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (9, N‘英语‘, 57) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (5, N‘数学‘, 87) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (6, N‘数学‘, 89) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (7, N‘数学‘, 80) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (8, N‘数学‘, 81) INSERT [dbo].[Score] ([stuID], [category], [score]) VALUES (9, N‘数学‘, 84) /****** Object: Table [dbo].[Department] Script Date: 05/11/2015 23:16:23 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Department]( [depID] [int] IDENTITY(1,1) NOT NULL, [depName] [varchar](50) NOT NULL, PRIMARY KEY CLUSTERED ( [depID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[Department] ON INSERT [dbo].[Department] ([depID], [depName]) VALUES (1, N‘计算机‘) INSERT [dbo].[Department] ([depID], [depName]) VALUES (2, N‘生物‘) INSERT [dbo].[Department] ([depID], [depName]) VALUES (3, N‘数学‘) SET IDENTITY_INSERT [dbo].[Department] OFF /****** Object: Table [dbo].[Student] Script Date: 05/11/2015 23:16:23 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Student]( [stuID] [int] IDENTITY(1,1) NOT NULL, [stuName] [varchar](50) NOT NULL, [deptID] [int] NOT NULL, PRIMARY KEY CLUSTERED ( [stuID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO SET IDENTITY_INSERT [dbo].[Student] ON INSERT [dbo].[Student] ([stuID], [stuName], [deptID]) VALUES (1, N‘计算机张三‘, 1) INSERT [dbo].[Student] ([stuID], [stuName], [deptID]) VALUES (2, N‘计算机李四‘, 1) INSERT [dbo].[Student] ([stuID], [stuName], [deptID]) VALUES (3, N‘计算机王五‘, 1) INSERT [dbo].[Student] ([stuID], [stuName], [deptID]) VALUES (4, N‘生物amy‘, 2) INSERT [dbo].[Student] ([stuID], [stuName], [deptID]) VALUES (5, N‘生物kity‘, 2) INSERT [dbo].[Student] ([stuID], [stuName], [deptID]) VALUES (6, N‘生物lucky‘, 2) INSERT [dbo].[Student] ([stuID], [stuName], [deptID]) VALUES (7, N‘数学_yiming‘, 3) INSERT [dbo].[Student] ([stuID], [stuName], [deptID]) VALUES (8, N‘数学_haoxue‘, 3) INSERT [dbo].[Student] ([stuID], [stuName], [deptID]) VALUES (9, N‘数学_wuyong‘, 3) SET IDENTITY_INSERT [dbo].[Student] OFF /****** Object: Default [DF__Departmen__depNa__5441852A] Script Date: 05/11/2015 23:16:23 ******/ ALTER TABLE [dbo].[Department] ADD DEFAULT (‘‘) FOR [depName] GO /****** Object: Default [DF__Score__category__5EBF139D] Script Date: 05/11/2015 23:16:23 ******/ ALTER TABLE [dbo].[Score] ADD DEFAULT (‘‘) FOR [category] GO /****** Object: Default [DF__Score__score__5FB337D6] Script Date: 05/11/2015 23:16:23 ******/ ALTER TABLE [dbo].[Score] ADD DEFAULT ((0)) FOR [score] GO /****** Object: Default [DF__Student__stuName__59063A47] Script Date: 05/11/2015 23:16:23 ******/ ALTER TABLE [dbo].[Student] ADD DEFAULT (‘‘) FOR [stuName] GO /****** Object: ForeignKey [FK__Student__deptID__59FA5E80] Script Date: 05/11/2015 23:16:23 ******/ ALTER TABLE [dbo].[Student] WITH CHECK ADD FOREIGN KEY([deptID]) REFERENCES [dbo].[Department] ([depID]) GO
with t1 as ( select b.stuID,SUM(a.score) as score from dbo.Score a left join dbo.Student b on a.stuID = b.stuID group by b.stuID ), t2 as ( select a.stuID,a.stuName,a.deptID,b.depName from dbo.Student a left join Department b on a.deptID = b.depID ), t3 as ( select rank() OVER(partition by deptID order by score desc) as RowId, t2.stuID,t2.stuName,t2.deptID,t2.depName,t1.score from t1 left join t2 on t1.stuID = t2.stuID ) select stuID,stuName,deptID,depName,score from t3 where RowId = 1
与row_rumber不同,rank考虑到了over子句中排序字段值相同的情况。如果使用row_number替换rank,则deptID为2的记录只会有1条。
T-SQL函数之Rank
标签:
热心网友 时间:2022-04-29 19:22
首先,打开需要修改的Exce,然后选择需要修改的数据,输入rank公式即可排序。具体步骤如下:
1、电脑打开Excel表格。
2、电脑打开Excel表格后,在排名中输入公式=RANK(J11,$J$11:J$14),$J$11:J$14是所有成绩单元格的绝对值,选中单元格后按F4就会变成绝对值。
3、输入公式后,就会得到名次,下拉复制公式。
4、所有排名就都出来了。
注意事项:
1、复制的单元格含公式或链接太多,复制粘贴时计算量较大导致计算机卡死。
2、选择复制的区域太大,因为部分数据不能体现,导致系统计算更加复杂容易卡死。
热心网友 时间:2022-04-29 20:40
rank是T_sql 函数,rank()函数返回结果集分区内指定字段的值的排名,指定字段的值的排名是相关行之前的排名加一。具体使用步骤如下:
1、在excel中编辑好需要排序的内容。
2、在C2单元格输入公式“=RANK(B2,$B$2:$B$4,0)”。
3、点击键盘“Enter”。
4、双击图示符号,向下填充公式。
5、公式填充后,排名结果就出来了。
注意事项:
1、操作第二步,在C2单元格输入公式“=RANK(B2,$B$2:$B$4,0)”时,引用单元格时必须是绝对引用“$B$2:$B$4”,否则在向下填充公式时会出现错误。
2、操作第二步,在C2单元格输入公式“=RANK(B2,$B$2:$B$4,0)”时,排位方式输入“0”是降序排列,若需要升序排列输入“1”即可。
扩展资料:
语法:
RANK() OVER([<partiton_by_clause>]<order by clause>)
partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区。
Order_by_clause确定将RANK值应用到分区中的行时所使用的顺序。
以下用一个成绩表作示例:
table架构:
s_score(s_class(班级),s_id(学号),s_score(分数))。
SQL statement1:
Select rank() over(order by s_score desc) as 名次,s_class,s_id,s_score from s_score。
参考资料来源:百度百科-rank
热心网友 时间:2022-04-29 22:14
软件版本:Office2013