sql语句中临时表使用实例详解

2023-12-01 0 858
目录
  • 一、临时表实现分步处理
    • 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(表名)

    sql语句中临时表使用实例详解

    sql语句中临时表使用实例详解

    2.2需求

    需要得到订单平均交付周期、最大交付周期、最小交付周期,为了实现这一需求,首先我们要求出每个订单的交付周期,其次我们需要将这些订单的交付周期求其平均值。

    2.3sql语句

    SELECT
    AVG( leadTime ) avgLeadTime,
    MAX( leadTime ) maxLeadTime,
    MIN( leadTime ) minLeadTime
    FROM
    ( 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、实例

    也许上面的概述表述并不清楚,现在用一个实例来说明。

    sql语句中临时表使用实例详解

    像这样的一个表结构,我想要计算2022年8月9号这一天的计划完成率,那就需要计算该日期的计划数和计划完成数的比值,也就是计算该日期的实出对应的数量与该日期的计划对应的数量的比值,但是上面的表结构中计划与实出都在type一个字段下,我又该如何将where条件设置为type等于“计划”求出计划数,同时又将where条件设置为type等于“实出”求出实际完成的数量呢?

    2.1表结构

    plan(表名)

    sql语句中临时表使用实例详解

    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临时表使用内容请搜索悠久资源以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源!

    您可能感兴趣的文章:

    • sql server创建临时表的两种写法和删除临时表
    • sqlserver通用的删除服务器上的所有相同后缀的临时表
    • sql server 临时表 查找并删除的实现代码
    • SQLSERVER临时表和表变量的区别汇总
    • MySQL中临时表的基本创建与使用教程
    • sql的临时表使用小结
    • MySQL中关于临时表的一些基本使用方法
    • SQLServer临时表的正确删除方式(sqlserver删除临时表)

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 MsSql sql语句中临时表使用实例详解 https://www.u-9.cn/database/mssql/5115.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务