PARTITION 与 ORDER
本课属于 Coddy SQL 学习旅程的“基础知识”单元。第 60 课,共 72 课。
我们还可以将 PARTITION BY 和 ORDER BY 组合使用。例如,考虑以下 table1:
| id | type |
| 132 | t1 |
| 52 | t2 |
| 92 | t1 |
| 154 | t3 |
| 198 | t1 |
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1这会按每种类型的 id 升序为行编号:
| id | type | row_num |
| 132 | t1 | 2 |
| 52 | t2 | 1 |
| 92 | t1 | 1 |
| 154 | t3 | 1 |
| 198 | t1 | 3 |
现在,id 132 的 row_num 是 2,因为它比 92 大,比 198 小(在所有类型为 t1 的行中)。
挑战
简单可用的表和列:
doors:id,publication_yeardoors_specs:id,country,color
编写一个 SQL 查询,分析每个国家的门颜色序列,并按出版年份排序。对于每个门空间,显示:
- 国家
- 颜色
- 出版年份
- 一个表示每个国家内颜色顺序的数字,顺序依据出版年份确定。将此列命名为
color_sequence_number
亲手试试
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
11窗口函数第 1 部分
ROW_NUMBER 函数ORDER BY 排序依据PARTITION BY 分区依据PARTITION 与 ORDERLEAD 与 LAG 函数回顾:LEAD 与 LAG回顾:图片回顾:方框自己练习: SQL 在线编辑器