SQL練習題三 取近值

2021-10-14 04:22:45 字數 1698 閱讀 7691

前言:資料治理中難免會有一些髒資料比如空值,我們一般通過取平均值,取眾數,取就近數等方法來填補這些空值,這裡用到的方法就是取最近值。

現有一張表(時間、值1、值2)如下:

要求:如果某列的字段在該日期為空值,則查詢時結果顯示為之前最接近日期的非空值

最終圖如下:

原始碼:

create

table table3

(ldate date

notnull

, value1 int

null

, value2 int

null);

insert

into table3 values

('2021-01-07'

,600

,400);

insert

into table3 values

('2021-01-06'

,null

,300);

insert

into table3 values

('2021-01-05'

,null

,350);

insert

into table3 values

('2021-01-04'

,450

,null);

insert

into table3 values

('2021-01-03'

,300

,320);

insert

into table3 values

('2021-01-02'

,null

,450);

insert

into table3 values

('2021-01-01'

,250

,null);

select

*from table3;

sql:

select

a.ldate,

(select value1

from table3 b

where b.ldate<=a.ldate

and b.value1 is

notnull

order

by a.ldate

limit

1) value1,

(select value2

from table3 b

where b.ldate<=a.ldate

and b.value2 is

notnull

order

by a.ldate

limit

1) value2

from table3 a

總結:歡迎有其他方法的小夥伴來討論!

SQL趣味練習題

第一中情況 create table renwu name varchar 20 not null,fahter varchar 20 insert into renwu values 小甲 大甲 insert into renwu values 大甲 老甲 insert into renwu na...

SQL基礎練習題

sql 基礎入門50題 1.選擇分數介於85 100,70 85,60 70,0 60分數段之間的人數,課程標號,課程名稱和所佔百分比 select distinct f.c name,a.c id,b.85 100 b.百分比,c.70 85 c.百分比,from score a left joi...

C練習題 (三)

1.用標準c程式設計 找出整形數字1 100之間的素數,並列印出來 素數 除了1和自己本身可以被整除 include void main while c 0 3 用標準c程式設計 輸出楊輝三角形的前10行 三角形的每一行是 x y n的展開式各項的係數。例如 第一行是 x y 0,其係數為1 第二行...