按兵不动→ 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日

悬赏问题

  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题
  • ¥15 有没有人能解决下这个问题吗,本人不会编程
  • ¥15 plotBAPC画图出错
  • ¥30 关于#opencv#的问题:使用大疆无人机拍摄水稻田间图像,拼接成tif图片,用什么方法可以识别并框选出水稻作物行
  • ¥15 Python卡尔曼滤波融合
  • ¥20 iOS绕地区网络检测