partition by多个字段
时间: 2023-05-09 21:01:43 浏览: 834
row_number,根据多个字段过滤,partition by
在SQL中,Partition By是根据指定的字段对数据进行分组。如果有多个字段需要分组,就需要使用Partition By多个字段。以以下数据为例:
| Name | City | Gender | Age |
|------|------|--------|-----|
| Tom | NY | male | 25 |
| Amy | NY | female | 27 |
| John | LA | male | 30 |
| Jane | LA | female | 28 |
| Jack | NY | male | 29 |
如果想要按照城市和性别进行分组,就需要使用以下SQL代码:
```
SELECT Name, City, Gender, Age,
ROW_NUMBER() OVER(PARTITION BY City, Gender ORDER BY Age) AS RowNum
FROM table
```
这条SQL语句会按照City和Gender将数据分组,并按照Age升序排序,然后为每个分组分配一个行号。输出结果如下:
| Name | City | Gender | Age | RowNum |
|------|------|--------|-----|--------|
| Amy | NY | female | 27 | 1 |
| Tom | NY | male | 25 | 1 |
| Jack | NY | male | 29 | 2 |
| Jane | LA | female | 28 | 1 |
| John | LA | male | 30 | 1 |
从输出结果可以看出,在每个City和Gender分组中,数据按照Age升序排序,并分配了一个行号。如果需要在分组中计算平均值、总和等数据,也可以使用Partition By多个字段实现。通过这种方式,可以更加灵活地对数据进行分组、排序和计算,从而满足不同的分析需求。
阅读全文