提问人:Andrew Tan 提问时间:11/18/2023 最后编辑:marc_sAndrew Tan 更新时间:11/18/2023 访问量:34
客户收入
Customer Revenue
问:
我需要帮助为我试图解决的问题构建 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 位
答: 暂无答案
评论