You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询每个城市最新创建日期的全部地理Shape数据?

解决SQL查询返回城市最新日期所有shape数据的问题

原查询存在的问题

原查询使用ROW_NUMBER()会给同一城市同一日期的行分配唯一序号,且ANY_VALUE(shape)会随机选取单个shape值,导致仅返回单条数据,无法获取该日期下的全部shape记录。

解决方案一:使用窗口函数RANK()替代ROW_NUMBER()

直接通过窗口函数标记最新日期的所有行,无需聚合操作:

SELECT city_id, city_name, shape, created_date AS date
FROM (
    SELECT 
        city_id, 
        city_name, 
        shape, 
        created_date,
        RANK() OVER (PARTITION BY city_id, city_name ORDER BY created_date DESC) AS rank
    FROM test
) t
WHERE rank = 1
ORDER BY created_date DESC;

RANK()会为同一城市同一日期的所有行分配相同的rank=1,筛选后即可得到该城市最新日期下的全部shape数据。

解决方案二:先获取最新日期再关联原表

通过子查询先确定每个城市的最新创建日期,再关联原表匹配所有对应记录:

SELECT t.city_id, t.city_name, t.shape, t.created_date AS date
FROM test t
INNER JOIN (
    SELECT city_id, city_name, MAX(created_date) AS latest_date
    FROM test
    GROUP BY city_id, city_name
) latest 
    ON t.city_id = latest.city_id 
    AND t.city_name = latest.city_name 
    AND t.created_date = latest.latest_date
ORDER BY t.created_date DESC;

这种方式逻辑直观,适合对窗口函数不太熟悉的场景。

内容的提问来源于stack exchange,提问作者BoB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 02:33:18