国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

sql語句中臨時表使用實例詳解

瀏覽:108日期:2023-03-06 14:25:45
目錄
  • 一、臨時表實現分步處理
    • 1.概述
    • 2.實例
      • 2.1表格結構
      • 2.2需求
      • 2.3sql語句
      • 2.4sql語句解析
  • 二、臨時表實現分層處理
    • 1、概述
      • 2、實例
        • 2.1表結構
        • 2.2需求
        • 2.3sql語句
        • 2.4sql語句解析

    一、臨時表實現分步處理

    1.概述

    當需要的結果需要經過多次處理后才能最終得到我們需要的結果時,就可以使用臨時表,這里臨時表就起到了一個中間處理的作用,實現了分步處理,簡化了問題。

    2.實例

    2.1表格結構

    pln_order_pool_detail(表名)

    2.2需求

    需要得到訂單平均交付周期、最大交付周期、最小交付周期,為了實現這一需求,首先我們要求出每個訂單的交付周期,其次我們需要將這些訂單的交付周期求其平均值。

    2.3sql語句

    SELECT    AVG( leadTime ) avgLeadTime,    MAX( leadTime ) maxLeadTime,    MIN( leadTime ) minLeadTimeFROM    ( SELECT DATEDIFF(reality_deliver_time,create_time) AS leadTime FROM  pln_order_pool  WHERE order_state = "finish" ) a

    2.4sql語句解析

    其中 SELECT DATEDIFF(reality_deliver_time,create_time) AS leadTime FROM pln_order_pool WHERE order_state = 'finish' 是求出每個訂單的交付周期作為臨時表,每個訂單的交付周期即狀態(order_state)為'finish'的訂單的實際交付時間(reality_deliver_time)減去該訂單的創建時間(create_time)

    DATEDIFF(reality_deliver_time,create_time):該函數表示實際交付日期(reality_deliver_time)與創建日期(create_time)的間隔,且結果是以天數進行返回

    AVG( leadTime ):將臨時表中的交付周期通過AVG函數求出平均交付周期

    MAX( leadTime):將臨時表中的交付周期通過MAX函數求出最大交付周期

    MIN( leadTime):將臨時表中的交付周期通過MIN函數求出最小交付周期

    二、臨時表實現分層處理

    1、概述

    在實際開發中經常會碰到一個字段下存儲的結果不同,而我又需要對這兩個結果進行處理得到最終的結果,此時如果沒有臨時表我們就可能需要寫兩個sql語句分別得到結果,然后在后端進行運算得到最終需要的結果。

    2、實例

    也許上面的概述表述并不清楚,現在用一個實例來說明。

    像這樣的一個表結構,我想要計算2022年8月9號這一天的計劃完成率,那就需要計算該日期的計劃數和計劃完成數的比值,也就是計算該日期的實出對應的數量與該日期的計劃對應的數量的比值,但是上面的表結構中計劃與實出都在type一個字段下,我又該如何將where條件設置為type等于“計劃”求出計劃數,同時又將where條件設置為type等于“實出”求出實際完成的數量呢?

    2.1表結構

    plan(表名)

    2.2需求

    求出2022年8月9號一天的計劃完成率

    2.3sql語句

    SELECT	planNums,	finishNums,	IFNULL( ROUND( finishNums / planNums * 100, 2 ), 0 ) finishRate FROM	( SELECT SUM( num ) planNums FROM plan WHERE type = "計劃" AND date = "2022-08-09") a,	( SELECT SUM( num ) finishNums FROM plan WHERE type = "實出" AND date = "2022-08-09") b

    2.4sql語句解析

    針對上述的問題,我們使用臨時表就可以完美的解決,根據條件的不同我們建立兩個臨時表,分別記錄當天的計劃總數和當天的實際完成的數量,實現分層處理,最后我們再將臨時表中的數據進行運算就可以得到當天的計劃完成率。

    SELECT SUM( num ) planNums FROM plan WHERE type = "計劃" AND date = "2022-08-09"

    此句求出2022年8月9號的計劃總數臨時表

    SELECT SUM( num ) finishNums FROM plan WHERE type = "實出" AND date = "2022-08-09"

    此句求出2022年8月9號的實際完成總數臨時表

    IFNULL(ROUND(finishNums/planNums*100,2),0):此函數用于排除臨時表中計劃總數為null的情況,若ROUND(finishNums/planNums*100,2)為空,則返回值為0,否則返回值就是ROUND(finishNums/planNums*100,2)

    ROUND(finishNums/planNums*100,2):此函數為四舍五入函數,將finishNums/planNums*100計算的結果保留兩位小數

    注意:臨時表一定需要起別名,否則就會報錯

    到此這篇關于sql語句中臨時表使用方法的文章就介紹到這了,更多相關sql臨時表使用內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

    標簽: MsSQL
    相關文章:
    主站蜘蛛池模板: 久久女同互慰一区二区三区 | 欧美性高清视频免费看www | 最新国产大片高清视频 | 韩国一级片视频 | 日本三级香港三级乳网址 | 免费特黄级夫费生活片 | 久久久久久全国免费观看 | 狼伊千合综网中文 | 国产日韩欧美精品在线 | 美女视频大全视频a免费九 美女视频大全网站免费 | 国产美女精品在线 | 国产精品久久国产三级国不卡顿 | 国产99视频精品免费视频免里 | 亚洲成人www | 波多野结衣一区二区在线 | 一区二区三区四区在线免费观看 | 免费在线观看a级片 | 国产一区二区在线播放 | 国产一级在线观看 | 久久久久综合给合狠狠狠 | 毛片视频网址 | 91精品免费看 | 99re热精品视频国产免费 | 999热精品这里在线观看 | 萝控精品福利视频一区 | 日本免费人成在线网站 | 国产三级做爰在线观看视频 | 一极毛片 | 国产亚洲精品久久久久久午夜 | 国产一区二区三区欧美 | 欧美一级毛片一免费 | 欧美亚洲日本韩国一级毛片 | 国产亚洲午夜精品a一区二区 | 青草福利在线 | 久久精品中文字幕第一页 | 久久99国产亚洲高清观看韩国 | 成 人 黄 色 免费播放 | 中文字幕一二三四区2021 | 久久国产精品-国产精品 | 一级欧美视频 | 日韩中文字幕精品久久 |