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
表达式查看