按oid顺序来分析累计订购金额
使用 SQL 语言来按 OID 排序计算累计订购金额,可以采用子查询和窗口函数的方式,以下是示例代码:
-- 创建订单表格
CREATE TABLE orders (
OID VARCHAR(10),
Amount INT
);
-- 插入示例数据
INSERT INTO orders VALUES
('001', 100),
('002', 50),
('003', 200),
('004', 80),
('005', 120),
('006', 70),
('007', 300),
('008', 150),
('009', 180),
('010', 90);
-- 按 OID 排序,计算累计订购金额
SELECT OID, Amount, SUM(Amount) OVER (ORDER BY OID) AS CumulativeAmount
FROM orders
ORDER BY OID;
运行以上代码之后会得到以下结果:
-----+--------+-----------------
001 | 100 | 100
002 | 50 | 150
003 | 200 | 350
004 | 80 | 430
005 | 120 | 550
006 | 70 | 620
007 | 300 | 920
008 | 150 | 1070
009 | 180 | 1250
010 | 90 | 1340
2个回复
-
xsmile
使用子查询的方式,可以先将订单表格按照 OID 排序,然后在外部查询中使用子查询来累加订单金额。
-- 使用子查询计算累计订购金额
SELECT
t1.OID, t1.Amount,
(SELECT SUM(t2.Amount) FROM orders t2 WHERE t2.OID <= t1.OID) AS CumulativeAmount
FROM
orders t1
ORDER BY
t1.OID;1年前 我来评论 -
xsmile
使用 JOIN 的方式,可以将订单表格自然连接上其子集,筛选出子集中 OID 小于等于当前 OID 的所有记录,然后按照 OID 排序进行分组,累加订单金额即可。
-- 使用 JOIN 计算累计订购金额
SELECT
t1.OID, t1.Amount, SUM(t2.Amount) AS CumulativeAmount
FROM
orders t1
JOIN orders t2
ON t2.OID <= t1.OID
GROUP BY
t1.OID, t1.Amount
ORDER BY
t1.OID;1年前 我来评论