【问题标题】:How to find rows with max value without aggregate functions SQLPLUS Oracle11g如何在没有聚合函数的情况下查找具有最大值的行 SQL PLUS Oracle 11g
【发布时间】:2019-01-05 14:30:21
【问题描述】:

我正在尝试在我的表中查找信用额度最高的行,

CREATE TABLE Course(
    CourseNr INTEGER,
    CourseTitel VARCHAR(60),
    CourseTyp VARCHAR(10),
    CourselenghtDECIMAL,
    Credit DECIMAL,
    PRIMARY KEY (CourseNr)
);

并且有不止一门课程具有最大值。我不想为此使用任何默认函数,有什么想法吗?

【问题讨论】:

  • 如果你不想用函数,你想用什么?
  • 我的意思是任何默认函数,如 MAX() 或类似的东西。

标签: sql oracle oracle11g


【解决方案1】:

大概,您希望 具有最大信用。一种常见的方法是查找任何没有更大信用的行:

select c.*
from course c
where c.credit >= all (select c2.credit from course c2);

【讨论】:

  • 感谢您的快速回答,但我不明白这背后的逻辑。你是什​​么意思 c.* ?对不起,我是新手^^
  • @YasahanZengin 。 . .这将返回course 中的所有列。如果您愿意,可以一一列出这些列。
  • @YasahanZengin 。 . .这是迄今为止较早的答案。
【解决方案2】:

获取具有Credit 且不存在具有更大Credit 的行的行:

SELECT 
  c.* 
FROM Course c
WHERE 
  NOT EXISTS (
    SELECT 1 FROM Course WHERE Credit > c.Credit
  ) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-19
    • 2020-11-24
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多