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 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢