1. 程式人生 > >【LeetCode--資料庫】換座位

【LeetCode--資料庫】換座位

626.換座位(中等)

題目:小美是一所中學的資訊科技老師,她有一張seat 座位表,平時用來儲存學生名字和與他們相對應的座位id,其中縱列的 id 是連續遞增的,小美想改變相鄰倆學生的座位,寫一個 SQL query 來輸出小美想要的結果

注意:如果學生人數是奇數,則不需要改變最後一個同學的座位

+---------+---------+
|    id   | student |
+---------+---------+
|    1    | Abbot   |
|    2    | Doris   |
|    3    | Emerson |
|    4    | Green   |
|    5    | Jeames  |
+---------+---------+

假如資料輸入的是上表,則輸出結果如下:

+---------+---------+
|    id   | student |
+---------+---------+
|    1    | Doris   |
|    2    | Abbot   |
|    3    | Green   |
|    4    | Emerson |
|    5    | Jeames  |
+---------+---------+

解法:按題目的要求,對所有資料進行拆分,12互換,34互換,最後一個是奇數的不動,然後就分成三塊來寫,第一塊就是id為偶數的,id-1就相當於和奇數的互換了,第二塊是

id為奇數的,id+1就相當於和偶數的互換了,最後一塊是最後一個為奇數的,不換,然後三塊合併排序就出來結果了

select s.id , s.student from(
select id-1 as id ,student from seat where mod(id,2)=0
union
select id+1 as id,student from seat where mod(id,2)=1 and id !=(select count(*) from seat)
union
select id,student from seat where mod(id,2)=1 and id = (select count(*) from seat)
) s order by id;

id-1 and mod(id,2)=0   就是對於奇數行 位置的 定義 (如果有下一行,則與下一行換位);

同樣 id+1 and mod(id,2)=1  就是對於偶數行 位置的 定義 (與上一行的奇數行換位);

mod(id,2)=1 and id = (select count(*) from seat) 就是當id數為奇數且與行數相等的時候(即最後一個奇數行)時,id保持不變;

相關推薦

LeetCode--資料庫座位

626.換座位(中等) 題目:小美是一所中學的資訊科技老師,她有一張seat 座位表,平時用來儲存學生名字和與他們相對應的座位id,其中縱列的 id 是連續遞增的,小美想改變相鄰倆學生的座位,寫一個 SQL query 來輸出小美想要的結果 注意:如果學生人數是奇數,則不

LeetCode--資料庫分數排名

178. Rank Scores(中等) 題目:編寫一個sql語句來實現分數排名,如果兩個分數相同,則兩個分數排名(Rank)相同,而且下一個名次應該是下一個連續的整數值,也就是說,名次之間不能有間隔。 +----+-------+ | Id | Score | +---

LeetCode--資料庫工資問題

627. 交換工資(簡單) 題目:給定一個salary 表,如下所示,有m=男性 和 f=女性的值 。交換所有的 f 和 m 值(例如,將所有 f 值更改為 m,反之亦然)。要求使用一個更新查詢,並且沒有中間臨時表 | id | name | sex | salary |

LeetCode--資料庫薪水問題

176.第二高的薪水(簡單) 題目:編寫一個 SQL 查詢,獲取 Employee 表中第二高的薪水(Salary) 例如下述 Employee 表,SQL查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null +----+------

leetcode databaseHuman Traffic of Stadium

bsp col eight new where date lease data class X city built a new stadium, each day many people visit it and the stats are saved as these

leetcode 簡單第二題 反轉整數

根據 code 註意 nbsp 輸出 bsp turn res reverse 給定一個 32 位有符號整數,將整數中的數字進行反轉。 示例 1: 輸入: 123 輸出: 321 示例 2: 輸入: -123 輸出: -321 示例 3: 輸入: 120 輸出: 21

leetcode 簡單第五題 最長公共前綴

else 函數 tco ret 包含 elf leetcode length num 編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴,返回空字符串 ""。 示例 1: 輸入: ["flower","flow","flight"] 輸出: "fl" 示

leetcode 簡單第十六題 二進制求和

res etc 包含 字符 pan 示例 leetcode def 表示 給定兩個二進制字符串,返回他們的和(用二進制表示)。 輸入為非空字符串且只包含數字 1 和 0。 示例 1: 輸入: a = "11", b = "1" 輸出: "100" 示例 2: 輸入: a

leetcode 簡單第十七題 二進制求和

def ret 示例 fine style dot 函數 其中 小數 實現 int sqrt(int x) 函數。 計算並返回 x 的平方根,其中 x 是非負整數。 由於返回類型是整數,結果只保留整數的部分,小數部分將被舍去。 示例 1: 輸入: 4 輸出: 2 示例

leetcode 簡單第十八題 爬樓梯

strong sel 整數 turn ret cli def 註意 solution 假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 註意:給定 n 是一個正整數。 示例 1: 輸入: 2 輸出: 2

leetcode 簡單第二十一題 相同的樹

pan same 結構 init style 一個 def lse 兩個 給定兩個二叉樹,編寫一個函數來檢驗它們是否相同。 如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。 示例 1: 輸入: 1 1 /

leetcode 簡單第三十八題 Excel表列名稱

itl span title 給定 取余 正整數 簡單 exc pre 給定一個正整數,返回它在 Excel 表中相對應的列名稱。 例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z

leetcode 簡單第三十七題 兩數之和 II - 輸入有序數組

nbsp def art col else ber clas 不可 strong 給定一個已按照升序排列 的有序數組,找到兩個數使得它們相加之和等於目標數。 函數應該返回這兩個下標值index1 和 index2,其中 index1 必須小於 index2。 說明: 返

leetcode 簡單第四十一題 階乘後的零

時間 時間復雜度 ron elf 說明 輸入 數量 n) 復雜度 給定一個整數 n,返回 n! 結果尾數中零的數量。 示例 1: 輸入: 3 輸出: 0 解釋: 3! = 6, 尾數中沒有零。 示例 2: 輸入: 5 輸出: 1 解釋: 5! = 120, 尾數中有 1

leetcode 簡單 第六十題 反轉鏈表

示例 reverse bsp tno sel leetcode rev lis div 反轉一個單鏈表。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 進

leetcode 簡單 第五十九題 同構字符串

另一個 tco 保留 {} 簡單 urn code 映射 for 給定兩個字符串 s 和 t,判斷它們是否是同構的。 如果 s 中的字符可以被替換得到 t ,那麽這兩個字符串是同構的。 所有出現的字符都必須用另一個字符替換,同時保留字符的順序。兩個字符不能映射到同一個字符

leetcode 簡單 第六十八題 二叉搜索樹的最近公共祖先

comm turn etc add style 存在 solution span 二叉 給定一個二叉搜索樹, 找到該樹中兩個指定節點的最近公共祖先。 百度百科中最近公共祖先的定義為:“對於有根樹 T 的兩個結點 p、q,最近公共祖先表示為一個結點 x,滿足 x 是 p、q

leetcode 簡單 第七十題 有效的字母異位詞

給定 etc turn dot 怎麽辦 sorted 說明 ott 編寫 給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的一個字母異位詞。 示例 1: 輸入: s = "anagram", t = "nagaram" 輸出: true 示例 2: 輸

leetcode 簡單 第八十題 3的冪

true lse str 輸入 strong 判斷 遞歸 code false 給定一個整數,寫一個函數來判斷它是否是 3 的冪次方。 示例 1: 輸入: 27 輸出: true 示例 2: 輸入: 0 輸出: false 示例 3: 輸入: 9 輸出: true 示例

leetcode 簡單 第七十四題 缺失數字

etc strong bsp ron 示例 span class 使用 ber 給定一個包含 0, 1, 2, ..., n 中 n 個數的序列,找出 0 .. n 中沒有出現在序列中的那個數。 示例 1: 輸入: [3,0,1] 輸出: 2 示例 2: 輸入: [9,