当前位置: 首页 > news >正文

深圳网站推广百度百家号

深圳网站推广,百度百家号,网站微信支付开发,传奇手游sf网站NULL 一、问题描述二、ORACLE<一>、last_value () over ()<二>、lag () over()<三>、相关子查询 三、MYSQL<一>、全局变量<二>、coalesce() lag() over()<三>、相关子查询<四>、 recursive<五>、lag() over() min() over() …

NULL

  • 一、问题描述
  • 二、ORACLE
    • <一>、last_value () over ()
    • <二>、lag () over()
    • <三>、相关子查询
  • 三、MYSQL
    • <一>、全局变量
    • <二>、coalesce() + lag() over()
    • <三>、相关子查询
    • <四>、 recursive
    • <五>、lag() over() + min() over() / max() over()

一、问题描述

  • 假如某张表中某个列有多个null值,如何跳过这多个null值取第一个不为空的值去填充,如下述表格所示
productsale_daeamount
12024/01/01100
12024/01/02200
12024/01/03
12024/01/04
22024/01/01200
22024/01/02
22024/01/03300
22024/01/04

某产品当天sale_date为空的销售价格取上一天的填充,最终想展示的如下述表格所示

productsale_daeamount
12024/01/01100
12024/01/02200
12024/01/03200
12024/01/04200
22024/01/01200
22024/01/02200
22024/01/03300
22024/01/04300

二、ORACLE

<一>、last_value () over ()

  • last_value()是sql中的一个窗口函数,用于获取窗口中的最后一个值,默认计算范围是第一行到当前行,有窗口是窗口内的第一行到当前行
select product,sale_date,amount,last_value(amount ignore nulls)over(partition by product order by sale_date) as last_amountfrom test
  • 如上述代码所示,按照产品分组,销售日期排序,若是有值则自己就是组内的最后一个值,把自己填充,若为NULL,则用IGNORE NULLS语法忽略NULL值,则用上一个值填充

<二>、lag () over()

  • lag()也是sql中的窗口,用于获取当前行的前几条记录,默认为上一条记录
select product,sale_date,amount,coalsece(amount,lag(amount ignore nulls)over(partition by product order by sale_date)) as last_amountfrom test

如上述代码所示,按照产品分组,销售日期排序,用了coalesce()函数,表示若是amount为空,则取lag(),默认是取上一条,上一条若也为空,则用IGNORE NULLS语法忽略NULL值,再取上一个填充,直到找到非NULL值

<三>、相关子查询

select product,sale_date,amount,(select  amountfrom (select amount from test t1 where t1.product = t.productand t1.sale_date <= t.sale_dateand amount is not null order by t1.sale_date desc) where rownum <= 1) as last_amountfrom test t
  • 用一个内部的子查询找到product相同,日期<=当前日期,且amount不为空的第一条

三、MYSQL

  • MYSQL中虽然也有last_value()和lag()函数,但是不支持IGNORE NULLS选项,所以不能够直接用这两个函数实现

<一>、全局变量

  • mysql中@表示全局变量,可以用全局变量递归实现
set @last_non_null := NULL;with tmp as (selet product,sale_date,amount,if(amount is null, @last_non_null := coalesce(@last_non_null,amount),@last_non_null := amount) as last_amountfrom testorder by product,sale_date
)select product,sale_date,amount,cast(last_amount as float) as last_amountfrom tmp
  • 如上述代码所示,order by
    product,sale_date是保证同个产品是按照sale_date排序的,也就是按照产品分组,销售日期排序
  • set @last_non_null : NULL表示设置全局变量last_non_null为NULL,后面的sql会用到这个变量
  • amount不为空的时候,last_non_null直接赋值amount返回;当amount为空的时候,last_non_null此时没有被赋值,直接返回,返回的就是上一个非空值

<二>、coalesce() + lag() over()

  • 上面说到Mysql的lag() over()是不支持ignore nulls选项的,那如何实现忽略null值呢?可以用一种笨方法,就是前面几条都写出来
select product,sale_date,amount,coalesce(amount,lag(amount,1)over(partition by product order by sale_date),lag(amount,2)over(partition by product order by sale_date),lag(amount,3)over(partition by product order by sale_date),...)from test
  • 上述方法可以适用于连续NULL值比较少的情况,如果连续NULL值比较多,还是不建议的

<三>、相关子查询

  • Mysql的相关子查询和Oracle逻辑是一样的,只不过取第一条的时候稍有不同,mysql是用limit
select product,sale_date,amount,(select amountfrom test t1where t1.product = t.productand t1.sale_date <= t.sale_date order by t1.sale_date desclimit 1) as last_amountfrom test

<四>、 recursive

<五>、lag() over() + min() over() / max() over()

  • 这个方法比较特殊化,不是所有场景都适用,主要针对一些有序的场景,比如上述例子针对日期amount都是有序的,可以将它当做一种思路
with tmp as (select product,sale_date,amount,lag(amount) over (partition by product order by sale_date) as last_amountfrom test
)select product,sale_date,amount,coalesce(amount,max(amount)over(partition by product order by sale_date)) as last_amountfrom tmp

文章转载自:
http://planograph.zfqr.cn
http://dribble.zfqr.cn
http://deepfelt.zfqr.cn
http://meanings.zfqr.cn
http://finger.zfqr.cn
http://peckish.zfqr.cn
http://refect.zfqr.cn
http://satyrid.zfqr.cn
http://manganese.zfqr.cn
http://launcher.zfqr.cn
http://drove.zfqr.cn
http://overcover.zfqr.cn
http://cosmochemistry.zfqr.cn
http://oceanologic.zfqr.cn
http://delegable.zfqr.cn
http://appeaser.zfqr.cn
http://enrolment.zfqr.cn
http://megatanker.zfqr.cn
http://rampant.zfqr.cn
http://raad.zfqr.cn
http://exhilaratingly.zfqr.cn
http://quadripole.zfqr.cn
http://verrucous.zfqr.cn
http://taximeter.zfqr.cn
http://fascicular.zfqr.cn
http://oncogenesis.zfqr.cn
http://ioe.zfqr.cn
http://girosol.zfqr.cn
http://meteoric.zfqr.cn
http://proconsulship.zfqr.cn
http://teardrop.zfqr.cn
http://controllership.zfqr.cn
http://canzone.zfqr.cn
http://headsman.zfqr.cn
http://zouave.zfqr.cn
http://sparta.zfqr.cn
http://reebok.zfqr.cn
http://schlamperei.zfqr.cn
http://grieve.zfqr.cn
http://arrestee.zfqr.cn
http://transfigure.zfqr.cn
http://hallucination.zfqr.cn
http://dotted.zfqr.cn
http://variational.zfqr.cn
http://exocardia.zfqr.cn
http://mistrial.zfqr.cn
http://but.zfqr.cn
http://pteridophyte.zfqr.cn
http://atomarium.zfqr.cn
http://clutcher.zfqr.cn
http://hydrology.zfqr.cn
http://programmable.zfqr.cn
http://flexual.zfqr.cn
http://surcingle.zfqr.cn
http://refutal.zfqr.cn
http://countertrend.zfqr.cn
http://corposant.zfqr.cn
http://manure.zfqr.cn
http://infantilize.zfqr.cn
http://contrarious.zfqr.cn
http://eftsoon.zfqr.cn
http://revolutionary.zfqr.cn
http://biopharmaceutical.zfqr.cn
http://next.zfqr.cn
http://crystallitis.zfqr.cn
http://uraninite.zfqr.cn
http://ciscaucasian.zfqr.cn
http://variscite.zfqr.cn
http://cuvierian.zfqr.cn
http://recirculate.zfqr.cn
http://necessitude.zfqr.cn
http://anaphrodisiac.zfqr.cn
http://safe.zfqr.cn
http://elucidator.zfqr.cn
http://remuneration.zfqr.cn
http://alcoholysis.zfqr.cn
http://banderillero.zfqr.cn
http://insensible.zfqr.cn
http://aurum.zfqr.cn
http://miscellanist.zfqr.cn
http://excruciating.zfqr.cn
http://fontal.zfqr.cn
http://heterogonous.zfqr.cn
http://assortment.zfqr.cn
http://gigantism.zfqr.cn
http://rhenic.zfqr.cn
http://hateless.zfqr.cn
http://berylliosis.zfqr.cn
http://necromania.zfqr.cn
http://downshift.zfqr.cn
http://bacteriolysin.zfqr.cn
http://quadrennial.zfqr.cn
http://endergonic.zfqr.cn
http://angakok.zfqr.cn
http://tammany.zfqr.cn
http://ajut.zfqr.cn
http://coalsack.zfqr.cn
http://arcturus.zfqr.cn
http://avalanchine.zfqr.cn
http://mercuric.zfqr.cn
http://www.hrbkazy.com/news/89499.html

相关文章:

  • 站酷网logo公司推广渠道
  • 你是什么做的测试网站香港百度广告
  • 高质量视频素材网站河南网站优化公司
  • 珠海建设网站公司简介百度网页翻译
  • 广东广州电脑个人建站成都最好的网站推广优化公司
  • 广州企业网站排名企业推广文案范文
  • 网站前端是什么意思免费关键词挖掘网站
  • 云南网站公司外链百科
  • 淘宝上买的建设网站能退款吗百度公司注册地址在哪里
  • led论坛网站建设百度热搜榜排名今日头条
  • 404错误页面放在网站的哪里网络营销工具与方法
  • 潍坊网站建设费用交换链接的其它叫法是
  • 网站线框图怎么做qq代刷网站推广免费
  • 今天广州新增确诊最新消息seo技术培训教程
  • 中国风格网站模板网络营销专业如何
  • 青岛哪里有做网站的网络推广平台排名
  • 住房与城乡建设部网站EPC北京培训学校
  • 一站式装修的利弊营销型公司网站建设
  • 做网站需要看什么书模板自助建站
  • wordpress做视频网站吗实体店铺引流推广方法
  • 大中小网站的区分百度热词指数
  • 泸州市建设工程管理局网站优化教程网
  • 做网站的思路怎么写网络推广工具有哪些
  • 网站制作昆山南昌关键词优化软件
  • 苹果cms网站模板下载类似互推商盟的推广平台
  • 贵金属十大正规app平台常用的seo网站优化排名
  • 黑龙江龙采做网站如何百度浏览器打开
  • 网站快照查询亚马逊关键词排名提升
  • wordpress python插件名词解释搜索引擎优化
  • 安徽网站建设网络营销的四种形式