客户收入

Customer Revenue

提问人:Andrew Tan 提问时间:11/18/2023 最后编辑:marc_sAndrew Tan 更新时间:11/18/2023 访问量:34

问:

我需要帮助为我试图解决的问题构建 SQL 嵌套查询。

鉴于这些条件:

  • type=buy,客户购买了东西,交易是潜在的收入
  • type=sell,客户卖了东西,收取10%的费用作为潜在收入
  • status=completed(包括交易)
  • status=pending(交易被忽略)
  • status=canceled(交易无效,从总收入中扣除交易金额的1%)

主要目标是计算收入,这似乎只需要一个枢轴,但我被要求在 SQL 中完成,所以我对逻辑有点困惑。

我已经复制了下面的数据,我唯一需要的就是如何解决这个问题,我也想了解其中的逻辑。

DROP TABLE IF EXISTS transactions;

-- create transactions table
CREATE TABLE transactions 
(
    dt INTEGER NOT NULL,
    customer INTEGER NOT NULL,
    type INTEGER NOT NULL,
    amount INTEGER NOT NULL,
    status INTEGER NOT NULL
);

-- insert some transactions values
INSERT INTO transactions VALUES (2021-07-03 , 'jack', 'BUY', 4.89, 'CANCELED');
INSERT INTO transactions VALUES (2021-07-03 , 'jack', 'BUY', 79.27, 'COMPLETED');
INSERT INTO transactions VALUES (2021-07-03 , 'jack', 'BUY', 19.92, 'COMPLETED');
INSERT INTO transactions VALUES (2021-07-03 , 'jack', 'BUY', 76.34, 'PENDING');
INSERT INTO transactions VALUES (2021-07-03 , 'jack', 'BUY', 18.39, 'PENDING');
INSERT INTO transactions VALUES (2021-07-03 , 'jack', 'SELL', 55.57, 'CANCELED');
INSERT INTO transactions VALUES (2021-07-03 , 'jack', 'SELL', 51.54, 'COMPLETED');
INSERT INTO transactions VALUES (2021-07-03 , 'jack', 'SELL', 51.30, 'COMPLETED');
INSERT INTO transactions VALUES (2021-07-03 , 'jack', 'SELL', 24.42, 'CANCELED');

我的步骤在这里:

SELECT
    customer = 'jack',
    type = 'buy' ,
    type = 'sell' ,
    status = 'completed' ,
    status = 'canceled' ,
    status = 'pending' ,
    
CASE
    COUNT (CASE WHEN type= 'buy' AND status = 'completed' then amount * 1),
    COUNT (CASE WHEN type= 'buy' AND  status = 'pending' then amount * 0),
    COUNT (CASE WHEN type= 'buy' AND  status = 'canceled' then amount * -0.01),
    COUNT (CASE WHEN type= 'sell' AND  status = 'completed' then amount * 0.1),
    COUNT (CASE WHEN type= 'sell' AND  status = 'pending' then amount * 0),
    COUNT (CASE WHEN type= 'sell' AND  status = 'canceled' then amount * -0.001),
    END AS TOTAL
FROM 
    transactions    
GROUP BY 
    1;

预期输出:

客户 完成 待定 取消 总收入
千斤顶 4 4 3 2 1 100.51

对于总收入,四舍五入到小数点后 2 位

SQL格式

评论


答: 暂无答案