数据库总结.png
数据库总结.xmind

作业

  1. 查找系统中文件最大的前5个文件
    2. 查找系统中文件最大的前5个文件 并将这些信息保存 /tmp/file.txt 文件中。

数据库

  1. 给你一个这样的数据库表数据 | 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 …

创建表

  1. create table tmp1
  2. (
  3. Y int default NULL,
  4. M int default NULL,
  5. Amount int default NULL
  6. );
  7. insert into tmp1
  8. (Y,M,amount)
  9. VALUES
  10. ('2020','1','101'),
  11. ('2020','2','102'),
  12. ('2020','3','103'),
  13. ('2021','1','201'),
  14. ('2021','2','202'),
  15. ('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;