SQL面試題練習 —— 求連續段的起始位置和結束位置

目錄

  • 1 題目
  • 2 建表語句
  • 3 題解

題目來源:拼多多。

1 題目


有一張表t_id記錄了id,id不重復,但是會存在間斷,求出連續段的起始位置和結束位置。

樣例數據

+-----+
| id  |
+-----+
| 1   |
| 2   |
| 3   |
| 5   |
| 6   |
| 8   |
| 10  |
| 12  |
| 13  |
| 14  |
| 15  |
+-----+

2 建表語句


--建表語句
CREATE TABLE t_id (
id bigint COMMENT 'ID'
) COMMENT 'ID記錄表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
;
-- 插入數據
insert into t_id(id)
values
(1),
(2),
(3),
(5),
(6),
(8),
(10),
(12),
(13),
(14),
(15)

3 題解


(1)lag()函數進行開窗計算與上一行的差值;

select id,id - lag(id) over (order by id) as diff
from t_id

執行結果

+-----+-------+
| id  | diff  |
+-----+-------+
| 1   | NULL  |
| 2   | 1     |
| 3   | 1     |
| 5   | 2     |
| 6   | 1     |
| 8   | 2     |
| 10  | 2     |
| 12  | 2     |
| 13  | 1     |
| 14  | 1     |
| 15  | 1     |
+-----+-------+

(2)獲得分組字段

根據diff進行判斷,如果差值為1代表連續賦值為0,否則代表不連續賦值為1,然后使用sum()進行累積計算,獲得分組依據字段。

select id,sum(if(diff = 1, 0, 1)) over (order by id) as group_type
from (select id,id - lag(id) over (order by id) as difffrom t_id) t

執行結果

+-----+-------------+
| id  | group_type  |
+-----+-------------+
| 1   | 1           |
| 2   | 1           |
| 3   | 1           |
| 5   | 2           |
| 6   | 2           |
| 8   | 3           |
| 10  | 4           |
| 12  | 5           |
| 13  | 5           |
| 14  | 5           |
| 15  | 5           |
+-----+-------------+

(3)得出結果

select group_type,min(id) as start_pos,max(id) as end_pos
from (select id,sum(if(diff = 1, 0, 1)) over (order by id) as group_typefrom (select id,id - lag(id) over (order by id) as difffrom t_id) t) tt
group by group_type

執行結果

+-------------+------------+----------+
| group_type  | start_pos  | end_pos  |
+-------------+------------+----------+
| 1           | 1          | 3        |
| 2           | 5          | 6        |
| 3           | 8          | 8        |
| 4           | 10         | 10       |
| 5           | 12         | 15       |
+-------------+------------+----------+

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36329.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36329.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36329.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【教程】DPW 325T FPGA板卡程序下載與固化全攻略

到底什么是固化??? 在開發板領域,"固化"通常指的是將軟件或操作系統的鏡像文件燒錄(Flash)到開發板的存儲介質上,使其成為開發板啟動時加載的系統。這個過程可以確保開發板在啟動時能…

從單點到全景:視頻匯聚/安防監控EasyCVR全景視頻監控技術的演進之路

在當今日新月異的科技浪潮中,安防監控領域的技術發展日新月異,全景攝像機便是這一領域的杰出代表。它以其獨特的360度無死角監控能力,為各行各業提供了前所未有的安全保障,成為現代安防體系中的重要組成部分。 一、全景攝像機的技…

【SpringMVC】第1-7章

第1章 初始SpringMVC 1.1 學習本套教程前的知識儲備 JavaSEHTMLCSSJavaScriptVueAJAX axiosThymeleafServletMavenSpring 1.2 什么是MVC MVC架構模式相關課程,在老杜的JavaWeb課程中已經詳細的講解了,如果沒有學過的,可以看這個視頻&…

抖音微短劇小程序平臺:源碼搭建與廣告回傳技術詳解

抖音微短劇小程序平臺:源碼搭建與廣告回傳技術詳解 在數字化時代,短視頻已成為大眾娛樂生活的重要組成部分。抖音微短劇小程序平臺,作為這一趨勢的佼佼者,不僅為用戶提供了豐富多樣的短視頻內容,還為創作者和廣告主提…

當下為什么越來越多的企業選擇產業園區,而不是寫字樓?

隨著經濟形勢的變化和各行業的升級轉型,我們發現越來越多的企業選擇扎根產業園而非傳統的寫字樓,這一現象背后真正的原因是什么呢?今天我們就站在企業自身發展的角度,全維度對比一下產業園與傳統寫字樓的區別,看是否能…

參加六西格瑪綠帶培訓是投資未來,還是花冤枉錢?

是否值得花費資金參加六西格瑪綠帶培訓,取決于多個因素。 從積極的方面來看,參加六西格瑪綠帶培訓具有以下潛在價值: 1. 提升專業技能:使您掌握一套系統的問題解決方法和流程改進工具,有助于在工作中更高效地解決復雜…

代碼隨想錄算法訓練營:14/60

非科班學習算法day14 | LeetCode266:翻轉二叉樹 ,Leetcode101: 對稱二叉樹,Leetcode100:相同的的樹 ,LeetCode572:另一顆樹的子樹,LeetCode104:二叉樹的最大深度,LeetCode559:N叉樹的最大深度 目…

CesiumJS【Basic】- #017 精靈動畫的渲染

文章目錄 精靈動畫的渲染1 目標2 實現3 資源文件精靈動畫的渲染 1 目標 完成動畫精靈圖(Animated Sprite Sheet)的渲染 2 實現 import * as Cesium from "cesium";const viewer = new Cesium.

SDK 程序卡在 AXI DMA 配置 (XAxiDma_CfgInitialize)的解決方法

在進行 AXI DMA 配置 時候代碼一直卡在XAxiDma_CfgInitialize函數出不來,也沒有打印報錯。 /* Initialize the XAxiDma device.*/CfgPtr XAxiDma_LookupConfig(DeviceId);if (!CfgPtr) {xil_printf("No config found for %d\r\n", DeviceId);return XST_…

Ubuntu安裝指定內核版本教程

Ubuntu安裝內核 1.查看當前os已安裝的內核 $sudo dpkg --get-selections |grep linux-image linux-image-5.10.0-1013-oem install linux-image-5.11.0-27-generic install linux-image-5.11.0-41-generic install …

ResNet-50算法

🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客🍖 原作者:K同學啊 一、理論知識儲備 1.CNN算法發展 AlexNet是2012年ImageNet競賽中,由Alex Krizhevsky和Ilya Sutskever提出,在2012年ImageNet競賽中&a…

頭歌——機器學習——支持向量機案例

第1關:基于支持向量機模型的應用案例 任務描述 本關任務:編寫一個基于支持向量機模型的應用案例。 相關知識 在本應用案例中,我們借助一個具體的實際問題,來完整地實現基于支持向量機模型的開發應用。在此訓練中,我…

運籌系列93:VRP精確算法

1. MTZ模型 MTZ是Miller-Tucker-Zemlin inequalities的縮寫。除了定義是否用到邊 x i j x_{ij} xij?外,還需要定義一個 u i u_i ui?用來表示此時車輛的當前載貨量。注意這里x變量需要定義為有向。 這里定義為pickup問題,代碼為: using Ju…

數據庫系統概論-第11章并發控制

允許多個用戶同時使用同一個數據庫的數據庫系統稱為多用戶數據庫系統。 事務可以一個一個地中行執行,即每個時刻只有一個事務運行,其他事務必須等到這個事務結束以后方能運行。 單處理機系統中,事務的并行執行實際上是這些并行事務的并行操…

windows下載jdk并安裝步驟(保姆級教程)

一、下載jdk 下載地址: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 二、雙擊下載好的jdk 更改安裝目錄然后點擊下一步 然后會彈出jre的安裝,需要選擇路徑(注意:這里的路徑必須跟前面的jdk在…

ocr數據不夠,怎么造數據

1.確定特定字體類型; 2.收集合適的圖片作為背景 3.在背景圖上填寫特定字體的字符內容 1)字體無法確認時怎么辦? 方法一:可以將文本行裁剪出來去網站上確認,網站鏈接:字體識別-在線掃一掃圖片找字體-搜字…

將huggingface的大模型轉換為safetensor格式

很多huggingface的大語言模型都是pytorch的格式,但是mindie需要safetensor格式,另外mindieservice加載原始的baichuan2-13b的模型出錯,后來排查是bfloat16數據格式的問題,所以這次轉換要一次性轉為float16的格式。 上代碼&#x…

計算機網絡:如何隱藏真實的IP和MAC地址?

目錄 一、什么是MAC地址二、什么是IP地址三、如何隱藏真實的MAC地址四、如何隱藏真實的IP地址 一、什么是MAC地址 MAC地址,全稱為媒體訪問控制地址(Media Access Control Address),是一種用于網絡通信的唯一標識符。它是由IEEE 8…

PLC網關如何選擇?plc網關作用-天拓四方

一、PLC網關在工業自動化領域的重要性和作用 PLC網關在工業自動化領域的重要性和作用不言而喻。作為工業自動化系統的重要組成部分,PLC網關起到了關鍵的橋梁作用,實現了PLC與其他設備、系統之間的數據傳輸和通信。 首先,PLC網關的重要性體現…

【華為OD機試】 約瑟夫問題(C++/Java/Python)

題目 題目描述 輸入一個由隨機數組成的數列(數列中每個數均是大于 0 的整數,長度已知),和初始計數值 m。 從數列首位置開始計數,計數到 m 后,將數列該位置數值替換計數值 m, 并將數列該位置數值出列,然后從下一位置從新開始計數,直到數列所有數值出列為止。 如果計數到…