Mr_Wu_1 2020-06-18 18:29 采纳率: 20%
浏览 192
已采纳

oracle表查询:要求剔除第一单实付金额小于100元的订单,再从剩下的订单中找出每个买家第二次以来的复购订单

要求:剔除第一单实付金额小于100元的订单,再从剩下的订单中找出每个买家第二次以来的复购订单。

是否可以先用客户ID进行排序,再用支付时间排序?还有如何排除第二单出现小于100元的情况呢,求大佬讲解思路

以下是问题中的表
CREATE TABLE T_PAY (pay_tm date, cus_id number(20), ord_no number(20),pay_amt number(10,2));
INSERT INTO T_PAY
VALUES (TO_DATE('2020-05-21 08:07:12','YYYY_MM_DD HH24:MI:SS'), 1, 1001, 88.20);
INSERT INTO T_PAY
VALUES (TO_DATE('2020-05-21 09:09:19','YYYY_MM_DD HH24:MI:SS'), 2, 1002, 120.40);
INSERT INTO T_PAY
VALUES (TO_DATE('2020-05-21 16:09:15','YYYY_MM_DD HH24:MI:SS'), 1, 1003, 167.60);
INSERT INTO T_PAY
VALUES (TO_DATE('2020-05-22 18:06:11','YYYY_MM_DD HH24:MI:SS'), 1, 1004, 268.30);
INSERT INTO T_PAY
VALUES (TO_DATE('2020-05-23 11:11:12','YYYY_MM_DD HH24:MI:SS'), 3, 1005, 66.60);
INSERT INTO T_PAY
VALUES (TO_DATE('2020-05-24 14:16:39','YYYY_MM_DD HH24:MI:SS'), 3, 1006, 88.80);
INSERT INTO T_PAY
VALUES (TO_DATE('2020-05-24 17:19:25','YYYY_MM_DD HH24:MI:SS'), 3, 1007, 200.50);
INSERT INTO T_PAY
VALUES (TO_DATE('2020-05-24 20:16:17','YYYY_MM_DD HH24:MI:SS'), 2, 1008, 268.30);
*/

  • 写回答

2条回答 默认 最新

  • 知了学飞 2020-06-22 13:35
    关注

    1、所有记录

    select * from T_PAY t;
    

    图片说明

    2、查询所有客户第一单,并且金额小于100的订单号

    SELECT * --ORD_NO
      FROM (SELECT row_number() over(partition by CUS_ID order by pay_tm) RN,
                   CUS_ID,
                   PAY_TM,
                   ORD_NO,
                   PAY_AMT
              FROM T_PAY)
     WHERE RN = 1  --第一单填1,第二单填2,如果是第一和第二单填 in (1,2)
       AND PAY_AMT < 100 --金额小于100
    

    图片说明

    3、形成结果集:
    剔除第一单实付金额小于100元的订单,再从剩下的订单中找出每个买家第二次以来的复购订单

    SELECT *
      FROM (SELECT row_number() over(partition by CUS_ID order by pay_tm) RN,
                   CUS_ID,
                   PAY_TM,
                   ORD_NO,
                   PAY_AMT
              FROM T_PAY)
     WHERE not (RN = 1 AND PAY_AMT < 100)
    --这里的not关键字,是取相反条件
    

    欢迎关注,Q群122230156

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 10月20日

悬赏问题

  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制