select * row_number () over (partition by grid_longitude order by grid_latitude)as rn from wwx1249869.pr01_sulvjingzhengfenxi_no001__046098改为正确写法
时间: 2023-11-02 18:42:02 浏览: 125
根据你的描述,你想要将查询语句进行修改。正确的写法应该是:
```
SELECT *, ROW_NUMBER() OVER (PARTITION BY grid_longitude ORDER BY grid_latitude) AS rn
FROM wwx1249869.pr01_sulvjingzhengfenxi_no001__046098;
```
在这个修改后的查询语句中,我们使用 `SELECT *` 来选择所有列,然后使用 `ROW_NUMBER()` 函数来为每个 `grid_longitude` 分区中的行分配一个唯一的序号,并将其命名为 `rn`。最后,我们从表 `wwx1249869.pr01_sulvjingzhengfenxi_no001__046098` 中获取数据。
相关问题
select * row_number () over (partition by grid_longitude order by grid_latitude)as rn from wwx1249869.pr01_sulvjingzhengfenxi_no001__046098修改
这是一个 SQL 查询语句,使用了窗口函数 `ROW_NUMBER()`。
`ROW_NUMBER()` 函数用于给结果集中的每一行分配一个唯一的序号。在这个查询中,`ROW_NUMBER()` 函数被用于为每个 `grid_longitude` 分区中的行分配一个序号,按照 `grid_latitude` 的顺序进行排序。
最终的查询结果会包含 `rn` 列,表示每个 `grid_longitude` 分区中行的序号。
select * ,row_number() over (partition by site_id, order by site_longitude,site_latitude) as row_s, sum(cells) over (partition by site_longitude order by site_latitude) as cells_s from wwx1249869.pr01_sid2s4g_20230601152305178 where row_s=1;修改为正确的sql语句
根据您提供的 SQL 语句,我发现其中的 `row_s` 是在 `where` 子句中被引用的,但是 `where` 子句中不能使用窗口函数,因此需要将 `where` 子句中的 `row_s=1` 移到一个子查询中。同时,由于 `row_s` 是在 `select` 子句中被定义的,因此需要使用别名替代。修改后的 SQL 语句如下所示:
```
SELECT *
FROM (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY site_id ORDER BY site_longitude, site_latitude) AS row_s,
SUM(cells) OVER (PARTITION BY site_longitude ORDER BY site_latitude) AS cells_s
FROM wwx1249869.pr01_sid2s4g_20230601152305178
) t
WHERE t.row_s = 1;
```
这样就可以正确地筛选出每个 `site_id` 分组中 `site_longitude` 和 `site_latitude` 最小的记录,并且在结果中包含每个 `site_longitude` 分组中 `cells` 的累加和。
阅读全文