力扣176.第N高的薪水
本文最后更新于 134 天前。

注意点:①SELECT salary into result

②函数中最后加分号,再RETURN result;

③查询中子句的执行顺序通常如下:

FROM 子句:指定从中检索数据的表。
WHERE 子句:根据指定的条件筛选行。
GROUP BY 子句:根据指定的列或表达式对行进行分组。
HAVING 子句:根据条件筛选分组的行。
SELECT 子句:选择将在结果集中返回的列或表达式。
ORDER BY 子句:根据指定的列或表达式对结果集进行排序。

  1. 不能直接在原表查询中使用ROWNUM进行大于某值的筛选:因为 ROWNUM 是在数据被选出之后才生成的,所以直接使用 ROWNUM > n (n>1)通常不会得到预期结果。你需要先生成全部排序或筛选后的结果集,然后再对 ROWNUM 进行限制。
  2. ROWNUM与ORDER BY的结合:为了正确实现分页或获取特定顺序的行,必须在子查询中先进行 ORDER BY,然后在外层查询中应用 ROWNUM 过滤。
  3. ROWNUM是一个只读伪列:这意味着你不能对它进行修改或更新,也不能将其作为表的一部分进行插入或更新操作。

错误写法:

SELECT salary INTO result
FROM (
    SELECT DISTINCT salary
    FROM Employee
    ORDER BY salary DESC
)
WHERE ROWNUM = N;

正确写法:

CREATE FUNCTION getNthHighestSalary(N IN NUMBER) RETURN NUMBER IS
result NUMBER;
BEGIN
    /* Write your PL/SQL query statement below */
SELECT salary into result
FROM(
    SELECT salary, ROWNUM num
    FROM(
        SELECT DISTINCT salary
        FROM Employee
        ORDER BY salary DESC
    )
)
WHERE num = N;
RETURN result;
END;
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇