按兵不动→ 2023-03-11 23:50 采纳率: 100%
浏览 47
已结题

使用SQL语句分组去重汇总

在用SQL获取数据库信息进行计算处理时,发现同一日期(天)内同一ID存在相同的记录(行),需要去掉同一日期内同一ID的相同行,仅保留其中一行即可,根据日期以此类推,最终提取一段时间内每天无同一ID重复的数据记录,怎么用SQL语句表现?如图说明。谢谢!

图1

img


图2

img

  • 写回答

6条回答 默认 最新

  • pzzhao 2023-03-12 00:25
    关注

    可以使用窗口函数和子查询来实现。
    假设表格名为table_name,日期列为date_column,ID列为id_column,其他需要保留的列为column1和column2,需要提取的时间段为从start_date到end_date。
    基本思路如下:

    • 根据日期和ID分组,使用窗口函数ROW_NUMBER()为每个组的行排名。
    • 在子查询中,以日期和ID作为关键字,选择排名为1的行,即去掉同一日期内同一ID的相同行。
    • 在主查询中,选择日期在时间段内且ID对应的行的排名为1的行,即每天无同一ID重复的数据记录。

    SQL语句如下:

    SELECT date_column, id_column, column1, column2
    FROM (
      SELECT date_column, id_column, column1, column2,
             ROW_NUMBER() OVER (PARTITION BY date_column, id_column ORDER BY date_column) AS row_num
      FROM table_name
      WHERE date_column BETWEEN start_date AND end_date
    ) subquery
    WHERE row_num = 1
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 创建了问题 3月11日

悬赏问题

  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测