Backcanhave7 2023-08-19 18:04 采纳率: 0%
浏览 12
已结题

SQL分组查询最后一个不为0的值

数据表如下所示:

img

我想查询不同id在当前行日期之前最后一个不为0的数量,例如我需要查17号和18号的数据,查询示例如下所示:

img

请教下,这种SQL应该怎么写?

  • 写回答

3条回答 默认 最新

  • 云村小威 Java领域优质创作者 2023-08-19 18:42
    关注
    
    SELECT id, date, number
    FROM (
      SELECT id, date, number,
        ROW_NUMBER() OVER (PARTITION BY id ORDER BY date DESC) AS rn
      FROM your_table
      WHERE date <= '2023-08-18' -- 替换为你想要查询的日期
    ) subquery
    WHERE rn = 1 AND number <> 0;
    

    这个查询首先在子查询中按照id分组,并按照date降序排序。然后,使用ROW_NUMBER()窗口函数为每个分组中的行分配一个行号。最后,在外部查询中,选择行号为1且number不为0的行。
    请注意,你需要将your_table替换为你实际的表名,并将'2023-08-18'替换为你想要查询的日期。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月22日
  • 创建了问题 8月19日

悬赏问题

  • ¥15 FutureWarning:不推荐使用空或全 NA 条目的 DataFrame 串联行为。怎么改呢?
  • ¥15 Chatgpt突然无法正常显示数学公式,如何解决?
  • ¥15 8位抢答器,按照课本写完代码,无法实现功能,如何解决?(关键词-数码管)
  • ¥15 一个用华为模拟器做的实验。
  • ¥28 opencv Cuda C++编译
  • ¥15 插入sim卡4g模组反复断连
  • ¥100 如何把 16bit Bayer 图像数据转换为 TIFF RGB
  • ¥15 进行基于用户的协同过滤推荐,使用准确率和召回率评价推荐模型的效果
  • ¥15 word脚注设置不起空格符号
  • ¥15 为什么apriori的运行时间会比fp growth的运行时间短呢