leetcode MYSQLデータベースタイトル177

3331 ワード

177. Nth Highest Salary
1、テーマと答え
Table: Employee
+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

Write a SQL query to get the nth highest salary from the Employee table.
SQLの作成Employeeテーブルからn番目の最高賃金を取得
答え:delimiter $$ create function getNthHighestSalary(N int) returns int begin declare n1 int; set n1=N-1; return ( select distinct Salary from Employee order by Salary desc limit n1,1 ); end $$2、知識点のまとめ
  • delimiter
  • create function
  • declare、set

  • 1、delimiterを使用するのはMySQLではデフォルトでセミコロンを使用してコマンドを終了するためです.定義した関数体の1つのコマンドが書き終わるとセミコロンで終了しますが、SQLではMySQLは関数体が定義済みと勘違いし、実行中にエラーを報告します.このため、コマンドの終了を識別するために新しい識別子を定義する必要があります.2、新しい関数を作成する:
    Create function function_name(parameter_type)     returns return_type     begin     #Function_content     end
    関連説明:関数名:合法的な識別子であり、既存のキーワードと競合するべきではありません.1つの関数はデータベースに属するべきで、db_を使用することができます.name.funciton_nameの形式で現在の関数が属するデータベースを実行します.そうしないと、デフォルトは現在のデータベースです.
    ≪パラメータ・リスト|Parameters List|emdw≫:1つ以上の関数パラメータがあり、パラメータがなくても構いません.各パラメータについては、パラメータ名とパラメータタイプで構成されます.戻り値:戻り値クラスタイプを示す関数体:カスタム関数の関数体は、使用可能なMySQL文、プロセス制御、変数宣言などの複数の文から構成されます.関数体にreturn戻り文が必ず含まれることを示す必要があります.3、mysqlストレージ中、変数を定義するには2つの方法があります.
  • setまたはselectを使用して直接値を付与、変数名は@で始まる.例:set@var=1;1つのセッションの任意の場所で宣言できます.役割ドメインはセッション全体であり、セッション変数と呼ばれます.
  • declareキーワードで宣言された変数は、ストレージ・プロシージャ変数としてのみ使用できます.たとえば、DECLARE var 1 INT DEFAULT 0などです.主にストレージ・プロシージャ、またはストレージ・パラメータに使用されます.

  • 補足
    LeetCodeの答え:
    select IFNULL((select distinct(Salary) 
    from Employee
    order by Salary desc
    limit 1,1),null) as SecondHighestSalary