作业
- 查找系统中文件最大的前5个文件
2. 查找系统中文件最大的前5个文件 并将这些信息保存 /tmp/file.txt 文件中。
数据库
- 给你一个这样的数据库表数据 | Y | M | Amount | | —- | —- | —- | | 2020 | 1 | 101 | | 2020 | 2 | 102 | | 2020 | 3 | 103 | | 2021 | 1 | 201 | | 2021 | 2 | 202 | | 2021 | 3 | 203 |
请写一个SQL,得出如下结果:
Y | M1 | M2 | M3 |
---|---|---|---|
2020 | 101 | 102 | 103 |
2021 | 201 | 202 | 203 |
需要使用case … when …
创建表
create table tmp1
(
Y int default NULL,
M int default NULL,
Amount int default NULL
);
insert into tmp1
(Y,M,amount)
VALUES
('2020','1','101'),
('2020','2','102'),
('2020','3','103'),
('2021','1','201'),
('2021','2','202'),
('2021','3','203');
查询
-- 查询所有
select * FROM tmp1;
-- 查询Y
select Y from tmp1;
-- 分组
SELECT Y from tmp1
GROUP BY Y;
-- 起别名
SELECT Y,
CASE WHEN M=1 THEN Amount
ELSE 0
END as M1,
CASE WHEN M=2 THEN Amount
ELSE 0
END as M2,
CASE WHEN M=3 THEN Amount
ELSE 0
END as M3
from tmp1;
-- 分组 取最大值
SELECT Y,
max(CASE WHEN M=1 THEN Amount
ELSE 0
END)
as M1,
max(CASE WHEN M=2 THEN Amount
ELSE 0
END)
as M2,
max(CASE WHEN M=3 THEN Amount
ELSE 0
END)
as M3
from tmp1
GROUP BY Y;