Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在学生表中选择一个科目的最高分数和另一个科目的最低分数?_Sql_Sql Server - Fatal编程技术网

Sql 如何在学生表中选择一个科目的最高分数和另一个科目的最低分数?

Sql 如何在学生表中选择一个科目的最高分数和另一个科目的最低分数?,sql,sql-server,Sql,Sql Server,从数学科目中选择最高分数,从物理科目中选择最低分数 我只能这样想: Select subject, max(Marks) as Max_Marks, MIN(Marks) as Min_Marks from Student group by Subject 但上面的查询显示了每个主题的最大值和最小值 任何其他查询方法?只需包括WHERE子句并执行条件聚合: select max(case when Subject = 'math' then Marks end) as math_Max_Ma

从数学科目中选择最高分数,从物理科目中选择最低分数

我只能这样想:

Select subject, max(Marks) as Max_Marks, MIN(Marks) as Min_Marks
from Student 
group by Subject
但上面的查询显示了每个主题的最大值和最小值


任何其他查询方法?

只需包括
WHERE
子句并执行条件聚合:

select max(case when Subject = 'math' then Marks end) as math_Max_Marks,
       min(case when Subject = 'physics' then Marks end) as physics_Min_Marks
from Student 
where Subject in ('math', 'physics');

只需包含
WHERE
子句并执行条件聚合:

select max(case when Subject = 'math' then Marks end) as math_Max_Marks,
       min(case when Subject = 'physics' then Marks end) as physics_Min_Marks
from Student 
where Subject in ('math', 'physics');

您可以使用如下查询,使用where子句和case when语句来决定是否需要使用max或min函数

Select subject, mark = (case when subject = 'math' then max(Marks) else min(Marks) end)
from Student 
where Subject = 'math'
   or Subject = 'physics'
group by Subject

您可以使用如下查询,使用where子句和case when语句来决定是否需要使用max或min函数

Select subject, mark = (case when subject = 'math' then max(Marks) else min(Marks) end)
from Student 
where Subject = 'math'
   or Subject = 'physics'
group by Subject

根据您的情况添加
其中的

查询:

CREATE TABLE #temp(SUBJECT varchar(12), MARK int)
INSERT INTO #temp(SUBJECT, MARK)
select 'Maths',   100  union
select 'Maths',   90  union
select 'Maths',   40  union
select 'Physics',   60  union
select 'Physics',   30  union
select 'Physics',   20  

Select subject, max(Mark) as Max_Marks, MIN(Mark) as Min_Marks
from #temp 
where Subject in ('maths','physics')
group by Subject
输出:

CREATE TABLE #temp(SUBJECT varchar(12), MARK int)
INSERT INTO #temp(SUBJECT, MARK)
select 'Maths',   100  union
select 'Maths',   90  union
select 'Maths',   40  union
select 'Physics',   60  union
select 'Physics',   30  union
select 'Physics',   20  

Select subject, max(Mark) as Max_Marks, MIN(Mark) as Min_Marks
from #temp 
where Subject in ('maths','physics')
group by Subject

根据您的情况添加
其中的

查询:

CREATE TABLE #temp(SUBJECT varchar(12), MARK int)
INSERT INTO #temp(SUBJECT, MARK)
select 'Maths',   100  union
select 'Maths',   90  union
select 'Maths',   40  union
select 'Physics',   60  union
select 'Physics',   30  union
select 'Physics',   20  

Select subject, max(Mark) as Max_Marks, MIN(Mark) as Min_Marks
from #temp 
where Subject in ('maths','physics')
group by Subject
输出:

CREATE TABLE #temp(SUBJECT varchar(12), MARK int)
INSERT INTO #temp(SUBJECT, MARK)
select 'Maths',   100  union
select 'Maths',   90  union
select 'Maths',   40  union
select 'Physics',   60  union
select 'Physics',   30  union
select 'Physics',   20  

Select subject, max(Mark) as Max_Marks, MIN(Mark) as Min_Marks
from #temp 
where Subject in ('maths','physics')
group by Subject

以上三个答案是正确的。 这样可能更容易理解

SELECT 
  (SELECT max(Marks) from Student WHERE subject = 'math')    AS Max_Math
, (SELECT min(Marks) from Student WHERE subject = 'physics') AS Min_Physics;

以上三个答案是正确的。 这样可能更容易理解

SELECT 
  (SELECT max(Marks) from Student WHERE subject = 'math')    AS Max_Math
, (SELECT min(Marks) from Student WHERE subject = 'physics') AS Min_Physics;

提示:
哪里需要
。提示:
哪里需要
。谢谢。我不知道这个案子是什么时候发生的。我想学习高级sql你能分享任何资源吗?@JeetashRathi。这是
案例
表情看谢谢。我不知道这个案子是什么时候发生的。我想学习高级sql你能分享任何资源吗?@JeetashRathi。它是
case
表达式查看