carlfire 2023-03-21 10:49 采纳率: 100%
浏览 46
已结题

Oracle数据库提取时剔除重复10次的数据

img


如上图,这是一个数据库原有的形式
现需要按照一定规则提取数据,规则如下
如果同时满足rq,code,name完全相等且相等条数大于10条,则提取时排除这些数据行

提取结果如下图所示,问如何实现

img

  • 写回答

3条回答 默认 最新

  • leaf_cq 2023-03-21 11:19
    关注

    1、使用 count over,(注意你实际上的条件是 cnt < 10,我的测试数据少,用的是3)

    WITH t0 AS (
            SELECT '3.21' rq, 1 CODE, '张三' NAME, 20 grade FROM dual UNION ALL
            SELECT '3.21' rq, 1 CODE, '张三' NAME, 21 grade FROM dual UNION ALL
            SELECT '3.21' rq, 1 CODE, '张三' NAME, 22 grade FROM dual UNION ALL
            SELECT '3.22' rq, 1 CODE, '张三' NAME, 23 grade FROM dual )
        t1 AS (
            SELECT t0.*, COUNT( 1 ) OVER( PARTITION BY rq, CODE, NAME ) AS cnt FROM t0 )
    SELECT rq, CODE, NAME, grade FROM t1 WHERE cnt < 3;
    

    2、使用 group by

    WITH t0 AS (
            SELECT '3.21' rq, 1 CODE, '张三' NAME, 20 grade FROM dual UNION ALL
            SELECT '3.21' rq, 1 CODE, '张三' NAME, 21 grade FROM dual UNION ALL
            SELECT '3.21' rq, 1 CODE, '张三' NAME, 22 grade FROM dual UNION ALL
            SELECT '3.22' rq, 1 CODE, '张三' NAME, 23 grade FROM dual )
        , t1 AS (
            SELECT DISTINCT rq, CODE, NAME FROM t0 GROUP BY rq, CODE, NAME HAVING COUNT( 1 ) < 10 )
    SELECT * FROM t0 JOIN t1 ON t0.rq = t1.rq AND t0.code = t1.code AND t0.name = t1.name;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月21日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度