1. 程式人生 > >mysql關鍵字DISTINCT/LIMIT習題 【596. 超過5名學生的課+177. 第N高的薪水】

mysql關鍵字DISTINCT/LIMIT習題 【596. 超過5名學生的課+177. 第N高的薪水】

一、DISTINCT關鍵字使用場景:

  1.SELECT DISTINCT column1,column2... :

     返回不同值的行,應有於column1、column2所有列而不僅是column1列。eg:下題177.

  2.COUNT(DISTINCT column1):

     對特定列columns中具有不同值的行進行計數。eg:下題596

二、LIMIT關鍵字

LIMIT m,n :從行m開始的n行。在mysql中,檢索出來的第一行為行0。

題596. 超過5名學生的課 (DISTINCT關鍵字)

思路:GROUP BY 分組,然後HAVING過濾分組

一開始輸入以下程式碼,錯誤。注意題目中的notes:學生在每個課中不應被重複計算。

​​SELECT class FROM courses
GROUP BY class
HAVING COUNT(*)>=5;​​

故需要新增關鍵字DISTINCT+列名,返回不同的學生名:

SELECT class FROM courses
GROUP BY class
HAVING COUNT(DISTINCT student)>=5;

177. 第N高的薪水(LIMIT關鍵字)

思路:降序排列,然後返回第N-1行開始的第一行:LIMIT N-1,1

一開始輸入以下程式碼,編譯錯誤。這是因為LIMIT後面只能跟常量,不允許跟表示式等。

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
      # Write your MySQL query statement below.
      SELECT DISTINCT Salary FROM Employee 
      ORDER BY Salary DESC 
      LIMIT N-1,1
  );
END

調整表示式為LIMIT m,1

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

相關推薦

mysql關鍵字DISTINCT/LIMIT習題 596. 超過5學生+177. N薪水

一、DISTINCT關鍵字使用場景:   1.SELECT DISTINCT column1,column2... :      返回不同值的行,應有於column1、column2所有列而不僅是column1列。eg:下題177.   2.COUNT(DISTINCT

每日記錄LeetCode596.超過5學生

有一個courses表,有:student(學生)和class (課程)。請列出所有超過或等於5名學生的課。例如,表:用到的表和資料SQL:-- ------------------------------ Table structure for `courses`-- --

LeetCode596. 超過5學生

題目 有一個courses 表 ,有: student (學生) 和 class (課程)。 請列出所有超過或等於5名學生的課。 例如,表: student class A Math

596.超過5學生

解析 select class from courses group by class having count( distinct student) >= 5; 之前直接考慮的是,雖然結果相同但是跟題目不符,注意“學生在每個課中不應被重複計算” select cl

LeetCode.596. 超過5學生

思路1: 即按課程分組,由於有重複資料,按學生計數時需要使用distinct. SELECT CLASS class FROM COURSES GROUP BY CLASS HAVING COUNT(DISTINCT STUDENT) >= 5 分析1

LeetCode596-MySQL-超過5學生

有一個courses 表 ,有: student (學生) 和 class (課程)。請列出所有超過或等於5名學生的課。例如,表:+---------+------------+ | student | class | +---------+------------

leetcode596:超過5學生

有一個courses 表 ,有: student (學生) 和 class (課程)。 請列出所有超過或等於5名學生的課。 例如,表: +---------+------------+ | student | class | +---------+----

超過5學生

有一個courses 表 ,有: student (學生) 和 class (課程)。 請列出所有超過或等於5名學生的課。 例如,表: +---------+------------+ | student | class | +--------

LeetCode177.N薪水

177.第N高的薪水編寫一個 SQL 查詢語句,獲取Employee表中第n高的薪水(Salary)。用到的表和資料SQL:Create table If Not Exists Employee (Id

SQL--leetcode596. 超過5學生

有一個courses 表 ,有: student (學生) 和 class (課程)。 請列出所有超過或等於5名學生的課。 例如,表: +---------+------------+ | student | class | +---------+------

力扣——超過5學生(數據庫的題

bio 計算 rom you note ont bold select from 有一個courses 表 ,有: student (學生) 和 class (課程)。 請列出所有超過或等於5名學生的課。 例如,表: +---------+------------+ | s

leetcode177. N薪水

這題其實和177思想比較接近,排序就行了 程式碼: CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN RETURN ( # Write your MySQL query state

MYSQL超過5學習的

有一個courses 表 ,有: student (學生) 和 class (課程)。 請列出所有超過或等於5名學生的課。 例如,表: 應該輸出: Note: 學生在每個課中不應被重複計算!!! 解法一:這道題有一個容易忽視的條件,每個學生每門課只記算一

[MySQL習題] 超過5學生的課程 Classes More Than 5 Students

There is a table courses with columns: student and class Please list out all classes which have more than or equal to 5 students.

LeetcodeMysql查詢N薪水

編寫一個 SQL 查詢,獲取 Employee 表中第 n 高的薪水(Salary)。 +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3

LeetCode596之超過5學生(MySQL實現)

一、題目 二、一種解題思路 1)介紹:分組計數解法(記得去重啊)    時間複雜度:O(n)    空間複雜度:O(1) 2)核心程式碼: select Class from courses group by Class having count(distin

每人漲10%的工資,漲的前一共不超過5萬,從低工資往工資的人漲,超過5W則停止漲,問漲的錢花了多少,多少人獲得了漲薪。

col case ID 技術 () 獲得 sum left number ;with test(CID,money,NewAmount) as ( SELECT Row_Number() over ( order by money ) as CID

Leetcode連結串列 19. Remove Nth Node From End of List / 刪除連結串列的倒數N個節點

Given a linked list, remove the n-th node from the end of list and return its head. Example: Given linked list: 1->2->3->4->5, and

LeedCode--19--刪除連結串列的倒數 n 個節點

一、原題要求: 給定一個連結串列,刪除連結串列的倒數第 n 個節點,並且返回連結串列的頭結點。 示例: 給定一個連結串列: 1->2->3->4->5, 和 n = 2. 當刪除了倒數第二個節點後,連結串列變為 1->2->3-&

LeetCode上關於求N薪水的使用(MySQL自定義函式)

第N高的薪水: 編寫一段SQL語句,從Employee表查詢獲得第 n 高的薪水。 +—-+——–+ | Id | Salary | +—-+——–+ | 1 | 100 | | 2