chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

你知道如何去求解連續(xù)區(qū)間嗎?

數(shù)據(jù)分析與開發(fā) ? 來源:大數(shù)據(jù)技術團隊 ? 作者:Lotus ? 2021-06-21 17:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

求解連續(xù)區(qū)間是數(shù)據(jù)分析、數(shù)據(jù)倉庫筆試面試中常考的SQL題目,今天為各位小伙伴分享筆試面試題,期待各位拿到心儀的offer或有所收獲!

1、連續(xù)出現(xiàn)的數(shù)字

編寫一個 SQL 查詢,查找所有至少連續(xù)出現(xiàn)三次的數(shù)字。

+----+-----+| Id | Num |+----+-----+| 1 | 1 || 2 | 1 || 3 | 1 || 4 | 2 || 5 | 1 || 6 | 2 || 7 | 2 |+----+-----+例如,給定上面的Logs表,1是唯一連續(xù)出現(xiàn)至少三次的數(shù)字。

+-----------------+| ConsecutiveNums |+-----------------+| 1 |+-----------------+

解法一:自連接三次,篩選l1,l2,l3的id連續(xù)且Num相等的行

注:如果數(shù)字連續(xù)出現(xiàn)超過三次,Num就會出現(xiàn)重復值,所以需要使用distinct去重

該方法實現(xiàn)簡單,但是時間復雜度較大,且如果改成連續(xù)出現(xiàn)4,5..10次,代碼就會非常冗余,不具備可拓展性。

select distinct l1.Num as ConsecutiveNumsfrom Logs l1,Logs l2,Logs l3where l2.Id = l1.Id + 1and l3.Id = l2.Id + 1and l1.Num = l2.Numand l2.Num = l3.Num

解法二:使用自定義變量進行條件判斷

速度比解法一快,且適用于任一連續(xù)次數(shù)

select distinct Num ConsecutiveNumsfrom( select Num, case when @prev = Num then @count := @count+1 --如果與之前相等則+1 else (@prev := Num) and (@count := 1) --如果不相等 重新賦值,count變1 end CNT from Logs,(select @prev := 0, @count := 0) t --變量初始化) t where t.CNT>=3

解法三:窗口函數(shù)

select distinct Num as ConsecutiveNumsfrom( select Num,Id, lag(Id,2)over(partition by Num order by Id) as prev from Logs)twhere t.Id = t.prev + 2

2、找到連續(xù)區(qū)間的開始和結束數(shù)字

表:Logs

+---------------+---------+| Column Name | Type |+---------------+---------+| log_id | int |+---------------+---------+ id 是上表的主鍵。上表的每一行包含日志表中的一個 ID。后來一些 ID 從 Logs 表中刪除。編寫一個 SQL 查詢得到 Logs 表中的 連續(xù)區(qū)間的開始數(shù)字和結束數(shù)字。 將查詢表按照 start_id 排序。查詢結果格式如下面的例子: Logs 表:

+------------+| log_id |+------------+| 1 || 2 || 3 || 7 || 8 || 10 |+------------+結果表:

+------------+--------------+| start_id | end_id |+------------+--------------+| 1 | 3 || 7 | 8 || 10 | 10 |+------------+--------------+結果表應包含 Logs 表中的所有區(qū)間。 從 1 到 3 在表中。 從 4 到 6 不在表中。 從 7 到 8 在表中。 9 不在表中。 10 在表中。

解題思路:

(1)使用兩個變量,一個@id用來記錄logid,可以比較當下log_id與之前l(fā)og_id的差值,判斷是否連續(xù)。一個@num用來儲存連續(xù)狀態(tài)

select log_id, case when @id = log_id - 1 then @num := @num else @num := @num + 1 end num, @id := log_idfrom Logs,(select @num := 0,@id := null)t

上述輸出結果如下所示

輸入:{"headers":{"Logs":["log_id"]},"rows":{"Logs":[[1],[2],[3],[7],[8],[10]]}} 輸出:{"headers": ["log_id", "num", "@prev_id := log_id"], "values": [[1, "1", 1], [2, "1", 2], [3, "1", 3], [7, "2", 7], [8, "2", 8], [10, "3", 10]]}

(2)得到上述結果后,用num字段分組,最小log_id為start_id,最大log_id為end_id。

select min(log_id) start_id, max(log_id) end_idfrom( select log_id, case when @id = log_id - 1 then @num := @num else @num := @num + 1 end num, @id := log_id from Logs,(select @num := 0,@id := null)t)t2group by num

3、報告系統(tǒng)狀態(tài)的連續(xù)日期

Table: Failed

+--------------+---------+| Column Name | Type |+--------------+---------+| fail_date | date |+--------------+---------+該表主鍵為 fail_date。 該表包含失敗任務的天數(shù). Table: Succeeded

+--------------+---------+| Column Name | Type |+--------------+---------+| success_date | date |+--------------+---------+該表主鍵為 success_date。該表包含成功任務的天數(shù). 系統(tǒng)每天運行一個任務。每個任務都獨立于先前的任務。任務的狀態(tài)可以是失敗或是成功。編寫一個 SQL 查詢 2019-01-01 到 2019-12-31 期間任務連續(xù)同狀態(tài) period_state 的起止日期(start_date 和 end_date)。即如果任務失敗了,就是失敗狀態(tài)的起止日期,如果任務成功了,就是成功狀態(tài)的起止日期。 最后結果按照起始日期start_date排序查詢結果樣例如下所示: Failed table:

+-------------------+| fail_date |+-------------------+| 2018-12-28 || 2018-12-29 || 2019-01-04 || 2019-01-05 |+-------------------+Succeeded table:

+-------------------+| success_date |+-------------------+| 2018-12-30 || 2018-12-31 || 2019-01-01 || 2019-01-02 || 2019-01-03 || 2019-01-06 |+-------------------+Result table:

+--------------+--------------+--------------+| period_state | start_date | end_date |+--------------+--------------+--------------+| succeeded | 2019-01-01 | 2019-01-03 || failed | 2019-01-04 | 2019-01-05 || succeeded | 2019-01-06 | 2019-01-06 |+--------------+--------------+--------------+結果忽略了2018年的記錄,因為我們只關心從2019-01-01到2019-12-31的記錄從 2019-01-01 到 2019-01-03 所有任務成功,系統(tǒng)狀態(tài)為 "succeeded"。從 2019-01-04 到 2019-01-05 所有任務失敗,系統(tǒng)狀態(tài)為 "failed"。從 2019-01-06 到 2019-01-06 所有任務成功,系統(tǒng)狀態(tài)為 "succeeded"。

解題思路:核心方法與上題一樣

(1)使用union all合并兩個表結果(相當于比第二題多了個state列)

(2)剩下思路同第二題,但是要維護一個@state狀態(tài),只有當日期連續(xù)增加,同時@sate不變的時候才能保持num不變

select period_state, min(task_date) as start_date, max(task_date) as end_datefrom( select period_state,task_date, case when datediff(task_date,@date) = 1 and @state = period_state then @num := @num else @num := @num + 1 end num, @date := task_date, @state := period_state from ( select 'succeeded' as period_state,success_date as task_date from Succeeded where success_date between '2019-01-01' and '2019-12-31' union all select 'failed' as period_state,fail_date as task_date from Failed where fail_date between '2019-01-01' and '2019-12-31' order by task_date ) t1,(select @date := null,@num := 0,@state := null) t2)t3group by period_state,numorder by start_date

4、體育館流量

X 市建了一個新的體育館,每日人流量信息被記錄在這三列信息中:序號 (id)、日期 (visit_date)、 人流量 (people)。

請編寫一個查詢語句,找出人流量的高峰期。高峰期時,至少連續(xù)三行記錄中的人流量不少于100。

例如,表stadium:

+------+------------+-----------+| id | visit_date | people |+------+------------+-----------+| 1 | 2017-01-01 | 10 || 2 | 2017-01-02 | 109 || 3 | 2017-01-03 | 150 || 4 | 2017-01-04 | 99 || 5 | 2017-01-05 | 145 || 6 | 2017-01-06 | 1455 || 7 | 2017-01-07 | 199 || 8 | 2017-01-08 | 188 |+------+------------+-----------+

對于上面的示例數(shù)據(jù),輸出為:

+------+------------+-----------+| id | visit_date | people |+------+------------+-----------+| 5 | 2017-01-05 | 145 || 6 | 2017-01-06 | 1455 || 7 | 2017-01-07 | 199 || 8 | 2017-01-08 | 188 |+------+------------+-----------+

提示:每天只有一行記錄,日期隨著 id 的增加而增加。

利用自定義變量求解

1.定義一個變量cnt,如果people >= 100,加1,否則變?yōu)?,這樣如果連續(xù)三行記錄大于等于100,就會出現(xiàn)連續(xù)增加的序列

2.利用id是有序增加的,找出人流量的高峰期

select distinct s.*from stadium s,( select id,visit_date,people, case when people >= 100 then @cnt := @cnt + 1 else @cnt := 0 end as cnt from stadium,(select @cnt:=0)a)bwhere b.cnt >= 3 and s.id between b.id-b.cnt+1 and b.id

責任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    790

    瀏覽量

    46728
  • 函數(shù)
    +關注

    關注

    3

    文章

    4417

    瀏覽量

    67568

原文標題:經(jīng)典 SQL 筆試面試題:求解連續(xù)區(qū)間

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    固定翼無人機激光傳感器的價格區(qū)間

    固定翼無人機激光傳感器價格跨度極大,從幾十元到數(shù)萬元以上不等,核心取決于功能類型、性能參數(shù)與集成度。以下按用途分類給出近期最新價格區(qū)間與關鍵影響因素,便于選型參考。
    的頭像 發(fā)表于 01-26 14:49 ?241次閱讀
    固定翼無人機激光傳感器的價格<b class='flag-5'>區(qū)間</b>

    油氣集輸管道極性排流器 智能測試樁排流鋅帶陽極直流固態(tài)耦合

    耦合
    邦信防腐郭亞哲
    發(fā)布于 :2025年11月17日 19:15:59

    薄膜電容的關鍵詞是什么知道嗎?

    薄膜電容是一種以金屬箔作為電極,以聚乙酯、聚丙烯、聚苯乙烯等塑料薄膜作為電介質的電容器,在電子電路中具有重要作用。薄膜電容有哪些關鍵詞知道嗎?
    的頭像 發(fā)表于 10-13 15:30 ?509次閱讀
    薄膜電容的關鍵詞是什么<b class='flag-5'>你</b><b class='flag-5'>知道</b>嗎?

    知道板卡廠商參與芯片研發(fā)的α階段意味著什么?

    大家都知道芯片很重要,但是否知道一顆芯片從設計構思到最終量產(chǎn),需要經(jīng)歷怎樣一個漫長的過程嗎?
    的頭像 發(fā)表于 09-24 17:08 ?7621次閱讀
    <b class='flag-5'>你</b><b class='flag-5'>知道</b>板卡廠商參與芯片研發(fā)的α階段意味著什么?

    工業(yè)人形機器人價格區(qū)間:賦能智能制造的新選擇

    工業(yè)人形機器人價格區(qū)間受到技術先進性、功能多樣性和應用場景復雜度的共同影響。富唯智能通過自研核心技術賦予機器人高度智能和靈活性,幫助企業(yè)更好地應對多任務協(xié)同和柔性制造需求。對于尋求智能制造升級的企業(yè)
    的頭像 發(fā)表于 08-27 17:39 ?1328次閱讀
    工業(yè)人形機器人價格<b class='flag-5'>區(qū)間</b>:賦能智能制造的新選擇

    知道光耦的特性參數(shù)包括哪些嗎?

    知道光耦的特性參數(shù)包括哪些嗎? 一、輸入特性參數(shù) 正向工作電壓(Forward Voltage):在給定的工作電流下,LED本身的壓降。 反向電壓(Reverse Voltage):LED所能承受
    的頭像 發(fā)表于 07-31 09:44 ?1949次閱讀
    <b class='flag-5'>你</b><b class='flag-5'>知道</b>光耦的特性參數(shù)包括哪些嗎?

    CST求解器選擇指南:瞬態(tài)(T)、頻域(F)還是積分方程(I)

    CST求解器選擇指南:瞬態(tài)、頻域還是積分方程?詳解CST MWS三種核心求解器的特點和最佳應用場景,幫助您選擇合適的求解器提升仿真效率
    的頭像 發(fā)表于 07-25 14:24 ?992次閱讀
    CST<b class='flag-5'>求解</b>器選擇指南:瞬態(tài)(T)、頻域(F)還是積分方程(I)

    已收藏!需要知道的57個常用樹莓派命令!

    初次使用樹莓派并不總是那么容易,因為可能還沒有使用命令行的習慣。然而,終端命令是必不可少的,而且通常比通過圖形用戶界面(GUI)操作更高效。那么,有哪些重要的命令是應該知道的呢?有相當多的命令
    的頭像 發(fā)表于 07-23 18:36 ?1157次閱讀
    已收藏!<b class='flag-5'>你</b>需要<b class='flag-5'>知道</b>的57個常用樹莓派命令!

    當仿真計算總是不收斂,的模型可能需要Abaqus非線性分析

    "計算不收斂”、“求解發(fā)散”、“出現(xiàn)負特征值”……對于許多仿真工程師來說,這些來自求解器的紅色警告信息是工作中最令人沮喪的“攔路虎”。我們常常下意識地檢查網(wǎng)格質量、邊界條件或是載荷步,但如果這些
    的頭像 發(fā)表于 07-22 14:55 ?680次閱讀

    在友晶DE1-SOC開發(fā)板實現(xiàn)Chirikov標準映射求解

    該項目是在友晶DE1-SOC開發(fā)板實現(xiàn)Chirikov標準映射的求解器,并將其應用于圖像加密和解密的概念驗證。
    的頭像 發(fā)表于 07-07 15:22 ?1863次閱讀
    在友晶DE1-SOC開發(fā)板實現(xiàn)Chirikov標準映射<b class='flag-5'>求解</b>器

    FPGA使用Cordic算法求解角度正余弦值

    在進行坐標變換的時候,需要計算角度的正余弦值,而在FPGA中是不能直接進行求解的,需要采用其它的方式進行求解
    的頭像 發(fā)表于 06-19 09:54 ?1430次閱讀
    FPGA使用Cordic算法<b class='flag-5'>求解</b>角度正余弦值

    知道船用變壓器有哪些嗎?

    在船舶和海洋平臺上,電力系統(tǒng)的穩(wěn)定運行至關重要,而船用變壓器作為其中的關鍵設備,其種類繁多,各具特點。知道船用變壓器有哪些嗎?讓我們一起來揭開它們的神秘面紗。CSD船用變壓器是船舶供電系統(tǒng)中
    的頭像 發(fā)表于 06-01 00:00 ?757次閱讀
    <b class='flag-5'>你</b><b class='flag-5'>知道</b>船用變壓器有哪些嗎?

    使用USB控制中心下載固件遇到的問題怎么解決?

    我使用 USB 控制中心下載了固件,program-fx3-iic-eeprom。但是當我需要重置新下載固件時,出現(xiàn)了請重置的設備來下載固件。我不知道怎么解決?求解
    發(fā)表于 05-27 06:35

    怎么利用matlab得到95%,80%和70%的置信區(qū)間,并生成不同區(qū)間下的功率誤差貝塔分布?

    matlab仿真 matlab新手,怎么利用matlab得到95%,80%和70%的置信區(qū)間,并生成不同區(qū)間下的功率誤差貝塔分布
    發(fā)表于 04-09 01:21

    調試ADDI7004BBBCZ遇到的問題求解

    ADDI7004BBBCZ 調試中:在8192DN值以上的某個值區(qū)間(比如:3600-3610),輸出碼值鎖定在3610,高于或低于這個區(qū)間輸出正常;每片器件鎖定的值不同;調節(jié)VGA增益,鎖定發(fā)生區(qū)間值會同比例變動;調節(jié)CDS增
    發(fā)表于 03-21 08:03