首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在sql server中查找具有特定数据的最大值

在sql server中查找具有特定数据的最大值
EN

Stack Overflow用户
提问于 2014-12-27 13:24:13
回答 5查看 63关注 0票数 1

我仍然对sql server感到困惑,例如,我有学生表,我试图为java学生找到最高分数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
STUDENT
| id | name  | mark | subject |
|  1 | jenny |  67  |  db    | 
|  2 | mark  |  74  |  java  |
|  3 | nala  |  90  |  java  |

我试着像这样得到输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
|  3 | nala  |  90  | 

我用sql编写这段代码,但输出为空。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT id,name,mark
FROM student
WHERE subject='Java'
 AND mark=
(SELECT max(mark) FROM student);

我该怎么纠正它呢?

EN

回答 5

Stack Overflow用户

发布于 2014-12-27 13:31:03

有许多方法可以在SQL中获得您想要的东西。但是,您应该了解您的方法存在的问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT id, name, mark
FROM student
WHERE subject = 'Java' AND
      mark = (SELECT max(mark) FROM student);

问题是对于'Java'mark的最大值可能不是。因此,任何行都不能同时通过where条件。

您需要在子查询中重复筛选器,或者显式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT id, name, mark
FROM student
WHERE subject = 'Java' AND
      mark = (SELECT max(mark) FROM student WHERE subject = 'Java');

或使用相关子查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT s.id, s.name, s.mark
FROM student s
WHERE s.subject = 'Java' AND
      s.mark = (SELECT max(mark) FROM student s2 WHERE s2.subject = s.subject);

请注意,最后一个查询使用了表别名。您应该学会在查询中使用它们;有时它们是必要的,它们通常会使查询更易于编写、阅读和理解。

票数 2
EN

Stack Overflow用户

发布于 2014-12-27 13:25:32

使用带有ORDER BY子句的TOP 1获取最高数据

试试这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT TOP 1 id, name, mark
FROM student
WHERE subject = 'Java'
ORDER BY mark DESC;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT id, name, mark
FROM (SELECT id, name, mark, ROW_NUMBER() OVER (ORDER BY mark DESC) AS RowNum
      FROM student
      WHERE subject = 'Java'
     ) AS A 
WHERE RowNum = 1;
票数 1
EN

Stack Overflow用户

发布于 2014-12-27 13:27:03

你不需要使用子查询。使用Top 1 with ties获取具有最高分数的学生,以及最高分数是否由多个学生共享

Where condition将过滤结果,使其仅包含subject = 'Java',因为带有order by的TOP1将在java中获取最大分数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT TOP 1 with ties id, name, mark
FROM student
WHERE subject = 'Java'
ORDER BY mark DESC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27667676

复制
相关文章
删除列中的 NULL 值
今天接到一个群友的需求,有一张表的数据如图 1,他希望能通过 SQL 查询出图 2 的结果。
白日梦想家
2020/07/20
9.9K0
删除列中的 NULL 值
获取GridView中的某列值
    protected void GridView1_RowEditing(object sen
Java架构师必看
2021/03/22
10.2K0
Django ORM 查询表中某列字段值
方式一获取到的是一个QuerySet,内容是键值对构成的,键为表的列名,值为对应的每个值。
BigYoung小站
2020/05/04
3.7K0
Pandas中求某一列中每个列表的平均值
前几天在Python最强王者交流群【冫马讠成】问了一道Pandas处理的问题,如下图所示。
前端皮皮
2022/08/17
4.9K0
Pandas中求某一列中每个列表的平均值
如何使用Excel将某几列有值的标题显示到新列中
如果我们有好几列有内容,而我们希望在新列中将有内容的列的标题显示出来,那么我们怎么做呢?
繁华是客
2023/03/03
11.3K0
Mysql与Oracle中修改列的默认值
背景: 业务发展需要,需要复用历史的表,并且通过表里面原来一个未使用的字段来区分不同的业务。 于是想到通过default来修改列的默认值: alter table A modify column biz default 'old' comment '业务标识 old-老业务, new-新业务' 现象: 上线几天之后,业务反馈旧业务的相关数据查询不到了。找后台运维查生产数据库,发现历史数据的biz字段还是null 原因: 自己在本地mysql数据库试了下,好像的确是default没法修改历史数据为null
SecondWorld
2021/09/08
13.2K0
Pandas 查找,丢弃列值唯一的列
数据清洗很重要,本文演示如何使用 Python Pandas 来查找和丢弃 DataFrame 中列值唯一的列,简言之,就是某列的数值除空值外,全都是一样的,比如:全0,全1,或者全部都是一样的字符串如:已支付,已支付,已支付…
萝 卜
2022/05/12
5.7K0
Pandas 查找,丢弃列值唯一的列
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7K0
Mysql中的列类型
支持的范围是1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
Tony He
2022/11/17
6.4K0
ORACLE列值合併
在SQL Server中合併列值能够使用For Xml Path,在Oracle中則能够使用wm_concat 或 ListAgg。
全栈程序员站长
2022/07/13
1.1K0
SQL 将多列的数据转到一列
如题。假设我们要把 emp 表中的 ename、job 和 sal 字段的值整合到一列中,每个员工的数据(按照 ename -> job -> sal 的顺序展示)是紧挨在一块,员工之间使用空行隔开。
白日梦想家
2020/09/08
5.4K0
【Python】基于某些列删除数据框中的重复值
Python按照某些列去重,可用drop_duplicates函数轻松处理。本文致力用简洁的语言介绍该函数。
阿黎逸阳
2020/09/08
20.6K0
【Python】基于某些列删除数据框中的重复值
C语言 将一个二维数组行和列的元素互换,存到另一个二维数组中
SingYi
2023/08/23
3920
C语言 将一个二维数组行和列的元素互换,存到另一个二维数组中
SQL中如何将一列中的值显示出字符指定位置与指定长度。
我们在对比系统目前存在的生日与身份证的时候会问,怎么只取其中值的特定位置,获得对比结果。 例如我们有一个值是123456789,那么我们怎么只显示4567呢?
繁华是客
2023/03/03
6.9K0
如何隐藏table 中的指定列?
如何隐藏table 中的指定列?当页面需要显示的内容太多,而页面宽度又不够,不想内容显示太混乱,常常会将指定的列暂时隐藏掉,那么如何让实现呢?
爱明依
2019/03/12
6.9K0
用过Excel,就会获取pandas数据框架中的值、行和列
至此,我们已经学习了使用Python pandas来输入/输出(即读取和保存文件)数据,现在,我们转向更深入的部分。
fanjy
2021/11/29
19.2K0
用过Excel,就会获取pandas数据框架中的值、行和列
数组指针 行指针 列指针
我们把指向数组的指针叫做数组指针,后面还会学到指针数组,这两个是不一样的,根据中学语文偏正词组的知识可以知道,前者是指针,后者是数组。
叶茂林
2023/07/28
1540
在数据框架中创建计算列
在Excel中,我们可以通过先在单元格中编写公式,然后向下拖动列来创建计算列。在PowerQuery中,还可以添加“自定义列”并输入公式。在Python中,我们创建计算列的方式与PQ中非常相似,创建一列,计算将应用于这整个列,而不是像Excel中的“下拉”方法那样逐行进行。要创建计算列,步骤一般是:先创建列,然后为其指定计算。
fanjy
2022/04/13
3.8K0
在数据框架中创建计算列
Excel公式技巧71:查找一列中有多少个值出现在另一列中
有时候,我们想要知道某列中有多少个值同时又出现在另一列中,例如下图1所示,列B中有一系列值,列D中有一系列值,哪些值既出现有列B中又出现在列D中。因为数据较少,不难看出,在列B中仅有2个值出现在列D中,即“完美Excel”和“Office”。
fanjy
2020/12/08
3.3K0
Excel公式技巧71:查找一列中有多少个值出现在另一列中
点击加载更多

相似问题

将每个散列元素放入数组Ruby中

22

将数组放入文件列列中

21

将散列值放入数组RUBY中

24

将散列值放入ruby中的数组中

15

将Perl数组放入散列中

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文