1. 程式人生 > 其它 >資料分析SQL面試題目9套-第5題(筆記)

資料分析SQL面試題目9套-第5題(筆記)

技術標籤:筆記MySQL

目錄


題目來源: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;