資料分析SQL面試題目9套-第5題(筆記)
阿新 • • 發佈:2021-01-28
目錄
題目來源:https://www.jianshu.com/p/0f165dcf9525
1. 題目(分組累加)
1)對A表的fdate列新增索引
2)通過SQL語句,將A表資料進行計算後得到B表結果,並描述執行過程
建表語句:
create table A2 (
FDATE datetime,
value int
);
insert into a2 values
("2018/11/23",10) ,
("2018/12/31",3),
("2019/2/9",53),
("2019/3/31",23),
("2019/7/8",11),
("2019/7/31",10);
2. 解題
2.1 對A表的fdate列新增索引
-- 新增索引 給 FDATE;
create index id_FDATE on a2(FDATE);
show index from a2;
2.2 通過SQL語句,將A表資料進行計算後得到B表結果,並描述執行過程
# 中間表:(標序號,累加前必須的步驟!)
select year(FDATE) FYEAR,
month(FDATE) FMONTH,
value,
row_number() over(partition by year(FDATE)) as rn_ysum, -- 根據年份為value標序號,為後面根據年份累加做準備
row_number() over () as rn_sum -- 為value標序號,為後面累加做準備
from A2;
select t.FYEAR,
t.FMONTH,
t.value,
sum(value) over (partition by FYEAR order by rn_ysum) as YSUM,
sum(value) over (order by rn_sum) as SUM
from(
select year(FDATE) FYEAR,
month(FDATE) FMONTH,
value,
row_number() over(partition by year(FDATE)) as rn_ysum,
row_number() over () as rn_sum
from A2
) t;
補充(索引)
# 新增索引
create index id_FDATE2 on a2(FDATE);
# 刪除索引
alter table a2 drop index id_FDATE;
# 檢視索引
show index from a2;