Oracle:显示课程中的最大描述

问题描述 投票:0回答:4

我正在编写将返回最长描述的课程的查询。在这里,我在想什么,但它不会工作?

SELECT Max(DESCRIPTION) 
FROM course
sql oracle aggregate-functions
4个回答
0
投票

内部查询选择最大描述长度,外部查询列出具有最大长度的课程。

select * from course 
where length(description) = (select max(length(description)) from course);

如果您只想要描述,请使用select description from ...而不是*


0
投票

在子查询中使用分析max()函数。这样基本表只读一次。

select description
from   ( 
         select description, length(description) as len,
                max(length(description)) over () as max_len
         from   course
       )
where  len = max_len
;

0
投票

这将为您提供课程表的最大描述。

select description
from (select description, length(description) as len
from course 
order by len desc) t
where rownum = 1

0
投票

你可以使用length comparison使用outer join并包括ties forcourse descriptions

create table course
(
  course_id int,
  description varchar2(100)
);     
insert all 
  into course(course_id,description) values (1,'Mathematics')
  into course(course_id,description) values (2,'Physics')
  into course(course_id,description) values (3,'Mathematics')
  into course(course_id,description) values (4,'Biology')
  into course(course_id,description) values (5,'Chemistry')
select * from dual;    
select c1.course_id, c1.description 
  from course c1  left outer join 
       course c2 on length(c2.description) > length(c1.description)
 where length(c2.description) is null;

COURSE_ID      DESCRIPTION
-----------    --------------
1              Mathematics
3              Mathematics     

Demo

© www.soinside.com 2019 - 2024. All rights reserved.