175

发布时间 2024-01-05 13:12:38作者: ╰(‵□′)╯

这道简单题的题解:

# Write your MySQL query statement below
select 
    firstName,lastName,city,state
from
    Person as p
left join
    address as a 
on
    p.personId = a.personId;

注意点

关于 MySql 函数 的 详解

问:mysql 原生 sql - CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
您似乎正在尝试创建一个MySQL函数,名为getNthHighestSalary,该函数接受一个整数参数N并返回一个整数。这个函数的目的似乎是找到第N高的薪水。

以下是如何在MySQL中创建此函数的示例

DELIMITER //
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
    RETURN (
        SELECT Salary 
        FROM Employee 
        ORDER BY Salary DESC 
        LIMIT N-1, 1
    );
END //
DELIMITER ;

哇 这里的 limit N-1,1 这个是 6 的 ~

这里,我们假设有一个名为Employee的表,其中包含一个名为Salary的列。此函数将返回薪水列表中的第N高的薪水。

注意:

DELIMITER 语句用于更改默认的命令结束符,因为我们在函数体内使用了子查询。
ORDER BY Salary DESC 将员工按薪水降序排列。
LIMIT N-1, 1 返回第N高的薪水。例如,如果N为3,它将返回第三高的薪水。
确保在执行此SQL之前已经创建了Employee表,并且该表中有一个名为Salary的列。
请根据您的实际表结构和需求进行相应的调整。

分割 符号 下面是这道题的 分析过程


然后 可以得出: 1.需使用 limit 来解题,2. 需先对 salary 进行去重,既先要知道:查询的时候,各个关键字的执行顺序,本题的2个重要关键字
就是: distict 和 order 这2个!首先是 select distict 然后是: order 3. 就是上面那个6的,就是 limit n-1,1 就是第n名!!

备注 知识点(小用)

这道题的题解如下:(用到的不太会的知识是:函数 和 函数内变量 怎么定义和使用!)

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
declare M int;
  set M = N - 1;
  RETURN (
      # Write your MySQL query statement below.
      select distinct salary 
       from 
        employee
       order by
        salary 
       desc
       limit M,1
  );
END

上面需要注意的点!---> 首先 beginend 相当于 是 程序的 {}

然后 定义 变量 自然是在 括号内!用的关键字 叫: declare
给变量 赋值 的 关键字 是 set
return 一个值,这个值用括号包住! 然后括号内 写的就是 sql 查询出的 数据!